diff options
-rw-r--r-- | lib/puppet/parser/compiler.rb | 23 | ||||
-rw-r--r-- | lib/puppet/parser/resource.rb | 9 | ||||
-rw-r--r-- | lib/puppet/resource.rb | 2 | ||||
-rw-r--r-- | lib/puppet/type.rb | 8 | ||||
-rwxr-xr-x | spec/unit/parser/compiler_spec.rb | 2 |
5 files changed, 10 insertions, 34 deletions
diff --git a/lib/puppet/parser/compiler.rb b/lib/puppet/parser/compiler.rb index 85980722c..a901c0dd6 100644 --- a/lib/puppet/parser/compiler.rb +++ b/lib/puppet/parser/compiler.rb @@ -251,19 +251,7 @@ class Puppet::Parser::Compiler # evaluate_generators loop. def evaluate_definitions exceptwrap do - if ary = unevaluated_resources - evaluated = false - ary.each do |resource| - if not resource.virtual? - resource.evaluate - evaluated = true - end - end - # If we evaluated, let the loop know. - return evaluated - else - return false - end + !unevaluated_resources.each { |resource| resource.evaluate }.empty? end end @@ -482,12 +470,7 @@ class Puppet::Parser::Compiler # Return an array of all of the unevaluated resources. These will be definitions, # which need to get evaluated into native resources. def unevaluated_resources - ary = resources.reject { |resource| resource.builtin? or resource.evaluated? } - - if ary.empty? - return nil - else - return ary - end + # The order of these is significant for speed due to short-circuting + resources.reject { |resource| resource.evaluated? or resource.virtual? or resource.builtin_type? } end end diff --git a/lib/puppet/parser/resource.rb b/lib/puppet/parser/resource.rb index 3cccf4f3e..c956a1106 100644 --- a/lib/puppet/parser/resource.rb +++ b/lib/puppet/parser/resource.rb @@ -32,12 +32,9 @@ class Puppet::Parser::Resource < Puppet::Resource end # Set up some boolean test methods - [:translated, :override, :evaluated].each do |method| - newmeth = (method.to_s + "?").intern - define_method(newmeth) do - self.send(method) - end - end + def translated?; !!@translated; end + def override?; !!@override; end + def evaluated?; !!@evaluated; end def [](param) param = symbolize(param) diff --git a/lib/puppet/resource.rb b/lib/puppet/resource.rb index 31237e3b1..d163d93f0 100644 --- a/lib/puppet/resource.rb +++ b/lib/puppet/resource.rb @@ -199,7 +199,7 @@ class Puppet::Resource end def resource_type - case type + @resource_type ||= case type when "Class"; find_hostclass(title) when "Node"; find_node(title) else diff --git a/lib/puppet/type.rb b/lib/puppet/type.rb index d0fea9731..5676b5d12 100644 --- a/lib/puppet/type.rb +++ b/lib/puppet/type.rb @@ -1874,12 +1874,8 @@ class Type self.to_trans.to_resource end - %w{exported virtual}.each do |m| - define_method(m+"?") do - self.send(m) - end - end - + def virtual?; !!@virtual; end + def exported?; !!@exported; end end end diff --git a/spec/unit/parser/compiler_spec.rb b/spec/unit/parser/compiler_spec.rb index a3fe56c0e..e8c06dd0b 100755 --- a/spec/unit/parser/compiler_spec.rb +++ b/spec/unit/parser/compiler_spec.rb @@ -23,7 +23,7 @@ class CompilerTestResource @evaluated end - def builtin? + def builtin_type? @builtin end |