From fa6494b69ad1b01a9c587c86aa1731f4702f5509 Mon Sep 17 00:00:00 2001 From: Luke Kanies Date: Fri, 13 Feb 2009 00:29:07 -0600 Subject: Using the FileCollection where appropriate. This commit just replaces the :file and :line accessors with the use of the new FileCollection Lookup module. This should mean that we've normalized all file names in a given process, which *might* have drastic RAM improvements. For initial simplicity, I've gone with a single global collection of file names, but it's built so it's easy to use individual file collections instead. Signed-off-by: Luke Kanies --- lib/puppet/parser/ast.rb | 7 ++++--- lib/puppet/parser/ast/leaf.rb | 2 +- lib/puppet/parser/ast/resource_override.rb | 4 ++-- lib/puppet/parser/resource.rb | 6 +++++- lib/puppet/parser/resource/param.rb | 6 +++++- lib/puppet/parser/resource/reference.rb | 2 ++ 6 files changed, 19 insertions(+), 8 deletions(-) (limited to 'lib/puppet/parser') diff --git a/lib/puppet/parser/ast.rb b/lib/puppet/parser/ast.rb index 303d75bac..ab23dd1f8 100644 --- a/lib/puppet/parser/ast.rb +++ b/lib/puppet/parser/ast.rb @@ -2,6 +2,7 @@ require 'puppet' require 'puppet/util/autoload' +require 'puppet/file_collection/lookup' # The base class for all of the objects that make up the parse trees. # Handles things like file name, line #, and also does the initialization @@ -10,11 +11,13 @@ class Puppet::Parser::AST # Do this so I don't have to type the full path in all of the subclasses AST = Puppet::Parser::AST + include Puppet::FileCollection::Lookup + include Puppet::Util::Errors include Puppet::Util::MethodHelper include Puppet::Util::Docs - attr_accessor :line, :file, :parent, :scope + attr_accessor :parent, :scope # don't fetch lexer comment by default def use_docs @@ -82,8 +85,6 @@ class Puppet::Parser::AST # method for them. This is probably pretty inefficient and should # likely be changed at some point. def initialize(args) - @file = nil - @line = nil set_options(args) end end diff --git a/lib/puppet/parser/ast/leaf.rb b/lib/puppet/parser/ast/leaf.rb index c545c1e47..dba9812a7 100644 --- a/lib/puppet/parser/ast/leaf.rb +++ b/lib/puppet/parser/ast/leaf.rb @@ -36,7 +36,7 @@ class Puppet::Parser::AST # Interpolate the string looking for variables, and then return # the result. def evaluate(scope) - return scope.strinterp(@value, @file, @line) + return scope.strinterp(@value, file, line) end end diff --git a/lib/puppet/parser/ast/resource_override.rb b/lib/puppet/parser/ast/resource_override.rb index 5c4a2410f..f8cf3a81e 100644 --- a/lib/puppet/parser/ast/resource_override.rb +++ b/lib/puppet/parser/ast/resource_override.rb @@ -40,8 +40,8 @@ class Puppet::Parser::AST :type => r.type, :title => r.title, :params => params, - :file => @file, - :line => @line, + :file => file, + :line => line, :source => scope.source, :scope => scope ) diff --git a/lib/puppet/parser/resource.rb b/lib/puppet/parser/resource.rb index 2fdd78ddf..7f0e33359 100644 --- a/lib/puppet/parser/resource.rb +++ b/lib/puppet/parser/resource.rb @@ -4,13 +4,17 @@ class Puppet::Parser::Resource require 'puppet/parser/resource/param' require 'puppet/parser/resource/reference' require 'puppet/util/tagging' + require 'puppet/file_collection/lookup' + + include Puppet::FileCollection::Lookup + include Puppet::Util include Puppet::Util::MethodHelper include Puppet::Util::Errors include Puppet::Util::Logging include Puppet::Util::Tagging - attr_accessor :source, :line, :file, :scope, :rails_id + attr_accessor :source, :scope, :rails_id attr_accessor :virtual, :override, :translated attr_reader :exported, :evaluated, :params diff --git a/lib/puppet/parser/resource/param.rb b/lib/puppet/parser/resource/param.rb index 1a5cfe8fb..7ce58f4c4 100644 --- a/lib/puppet/parser/resource/param.rb +++ b/lib/puppet/parser/resource/param.rb @@ -1,10 +1,14 @@ +require 'puppet/file_collection/lookup' + # The parameters we stick in Resources. class Puppet::Parser::Resource::Param - attr_accessor :name, :value, :source, :line, :file, :add + attr_accessor :name, :value, :source, :add include Puppet::Util include Puppet::Util::Errors include Puppet::Util::MethodHelper + include Puppet::FileCollection::Lookup + def initialize(hash) set_options(hash) requiredopts(:name, :value, :source) diff --git a/lib/puppet/parser/resource/reference.rb b/lib/puppet/parser/resource/reference.rb index cb505d606..bffc03788 100644 --- a/lib/puppet/parser/resource/reference.rb +++ b/lib/puppet/parser/resource/reference.rb @@ -1,7 +1,9 @@ require 'puppet/resource_reference' +require 'puppet/file_collection/lookup' # A reference to a resource. Mostly just the type and title. class Puppet::Parser::Resource::Reference < Puppet::ResourceReference + include Puppet::FileCollection::Lookup include Puppet::Util::MethodHelper include Puppet::Util::Errors -- cgit From 73a0757b559d7e4fbd1da43bbcf4e60fd9155896 Mon Sep 17 00:00:00 2001 From: Brice Figureau Date: Fri, 19 Dec 2008 15:05:29 +0100 Subject: Fix #1828 - Scope.number? wasn't strict enough and could produce wrong results Some invalid numbers were treated as numbers and conversion to Integer was failing returning 0 (for instance 0.24.7). Signed-off-by: Brice Figureau --- lib/puppet/parser/scope.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'lib/puppet/parser') diff --git a/lib/puppet/parser/scope.rb b/lib/puppet/parser/scope.rb index 4acdf41c9..77e7b0cfd 100644 --- a/lib/puppet/parser/scope.rb +++ b/lib/puppet/parser/scope.rb @@ -52,11 +52,11 @@ class Puppet::Parser::Scope if value.is_a?(String) if value =~ /^-?\d+(:?\.\d+|(:?\.\d+)?e\d+)$/ return value.to_f - elsif value =~ /^0x\d+/i + elsif value =~ /^0x[0-9a-f]+$/i return value.to_i(16) - elsif value =~ /^0\d+/i + elsif value =~ /^0[0-7]+$/ return value.to_i(8) - elsif value =~ /^-?\d+/ + elsif value =~ /^-?\d+$/ return value.to_i else return nil -- cgit From 081021af4dda0d19e7de7debb580196219bb7c36 Mon Sep 17 00:00:00 2001 From: Brice Figureau Date: Fri, 19 Dec 2008 17:38:50 +0100 Subject: Fix #1829 - Add puppet function versioncmp to compare versions Signed-off-by: Brice Figureau --- lib/puppet/parser/functions/versioncmp.rb | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 lib/puppet/parser/functions/versioncmp.rb (limited to 'lib/puppet/parser') diff --git a/lib/puppet/parser/functions/versioncmp.rb b/lib/puppet/parser/functions/versioncmp.rb new file mode 100644 index 000000000..62df38ffc --- /dev/null +++ b/lib/puppet/parser/functions/versioncmp.rb @@ -0,0 +1,10 @@ +require 'puppet/util/package' + +Puppet::Parser::Functions::newfunction(:versioncmp, :doc => "Compares two versions.") do |args| + + unless args.length == 2 + raise Puppet::ParseError, "versioncmp should have 2 arguments" + end + + return Puppet::Util::Package.versioncmp(args[0], args[1]) +end -- cgit From a677e26eb1452c08d7724047a18e50f4a654d2cd Mon Sep 17 00:00:00 2001 From: Luke Kanies Date: Thu, 2 Apr 2009 19:41:17 -0500 Subject: Fixing all tests that were apparently broken in the 0.24.x merge. Signed-off-by: Luke Kanies --- lib/puppet/parser/resource/reference.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/puppet/parser') diff --git a/lib/puppet/parser/resource/reference.rb b/lib/puppet/parser/resource/reference.rb index cf7e997d8..0c28cf0df 100644 --- a/lib/puppet/parser/resource/reference.rb +++ b/lib/puppet/parser/resource/reference.rb @@ -1,5 +1,5 @@ # A reference to a resource. Mostly just the type and title. -require 'puppet/resource_reference' +require 'puppet/resource/reference' require 'puppet/file_collection/lookup' # A reference to a resource. Mostly just the type and title. -- cgit