summaryrefslogtreecommitdiffstats
path: root/lib/puppet/parser/interpreter.rb
diff options
context:
space:
mode:
authorluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2006-02-27 22:21:44 +0000
committerluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2006-02-27 22:21:44 +0000
commit8c821c09eebe117bd8b100b6dc416ded0588b979 (patch)
treeaacd4fb7d966eae215917e5556e9e08eeb43bc53 /lib/puppet/parser/interpreter.rb
parent37c10d176d8d3b7bb1920bbda66c6f0429b66730 (diff)
downloadpuppet-8c821c09eebe117bd8b100b6dc416ded0588b979.tar.gz
puppet-8c821c09eebe117bd8b100b6dc416ded0588b979.tar.xz
puppet-8c821c09eebe117bd8b100b6dc416ded0588b979.zip
Mostly, this is a refactoring commit. There is one significant new feature,
though: overrides now only work within a class heirarchy, which is to say that a subclass can override an element in a base class, but a child scope cannot otherwise override an element in a base scope. I've also done a good bit of refactoring, though; notably, AST#evaluate now takes named arguments, and I changed the 'name' parameter to 'type' in all of the Component classes (this was all internal, but was confusing as it was). I also removed the need for the autonaming stuff -- it's now acceptable for components not to have names, and everything behaves correctly. I haven't yet removed the autoname code, though; I'll do that on the next commit. git-svn-id: https://reductivelabs.com/svn/puppet/trunk@952 980ebf18-57e1-0310-9a29-db15c13687c0
Diffstat (limited to 'lib/puppet/parser/interpreter.rb')
-rw-r--r--lib/puppet/parser/interpreter.rb18
1 files changed, 14 insertions, 4 deletions
diff --git a/lib/puppet/parser/interpreter.rb b/lib/puppet/parser/interpreter.rb
index 1ad039f06..f9ee81f8c 100644
--- a/lib/puppet/parser/interpreter.rb
+++ b/lib/puppet/parser/interpreter.rb
@@ -195,14 +195,25 @@ module Puppet
end
# We've already evaluated the AST, in this case
- return @scope.evalnode(names, facts, classes, parent)
+ #return @scope.evalnode(names, facts, classes, parent)
+ return @scope.evalnode(
+ :name => names,
+ :facts => facts,
+ :classes => classes,
+ :parent => parent
+ )
else
# We've already evaluated the AST, in this case
@scope = Puppet::Parser::Scope.new() # no parent scope
@scope.interp = self
@scope.type = "puppet"
@scope.name = "top"
- return @scope.evaluate(@ast, facts, @classes)
+ #return @scope.evaluate(@ast, facts, @classes)
+ return @scope.evaluate(
+ :ast => @ast,
+ :facts => facts,
+ :classes => @classes
+ )
end
#@ast.evaluate(@scope)
rescue Puppet::DevError, Puppet::Error, Puppet::ParseError => except
@@ -233,7 +244,6 @@ module Puppet
# this doesn't actually do anything, because we have to evaluate the
# entire configuration each time we get a connect.
def evaluate
-
# FIXME When this produces errors, it should specify which
# node caused those errors.
if @usenodes
@@ -242,7 +252,7 @@ module Puppet
@scope.type = "puppet"
@scope.interp = self
Puppet.debug "Nodes defined"
- @ast.safeevaluate(@scope)
+ @ast.safeevaluate(:scope => @scope)
else
Puppet.debug "No nodes defined"
return