summaryrefslogtreecommitdiffstats
path: root/lib/puppet/parser/ast/caseopt.rb
diff options
context:
space:
mode:
authorluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2006-03-03 22:23:00 +0000
committerluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2006-03-03 22:23:00 +0000
commitf2ea9b7840adedcf3f99b222f6f8fa741ea64650 (patch)
treeb53d3b26de7e0d08234ca7d49407b15052909fc5 /lib/puppet/parser/ast/caseopt.rb
parent1a3de8a45d71747978ce9cb1870b39a751352c02 (diff)
downloadpuppet-f2ea9b7840adedcf3f99b222f6f8fa741ea64650.tar.gz
puppet-f2ea9b7840adedcf3f99b222f6f8fa741ea64650.tar.xz
puppet-f2ea9b7840adedcf3f99b222f6f8fa741ea64650.zip
Supporting variables as the test value in both case statements and selectors.
git-svn-id: https://reductivelabs.com/svn/puppet/trunk@976 980ebf18-57e1-0310-9a29-db15c13687c0
Diffstat (limited to 'lib/puppet/parser/ast/caseopt.rb')
-rw-r--r--lib/puppet/parser/ast/caseopt.rb15
1 files changed, 12 insertions, 3 deletions
diff --git a/lib/puppet/parser/ast/caseopt.rb b/lib/puppet/parser/ast/caseopt.rb
index 366b6e939..6b0e23c3e 100644
--- a/lib/puppet/parser/ast/caseopt.rb
+++ b/lib/puppet/parser/ast/caseopt.rb
@@ -13,6 +13,7 @@ class Puppet::Parser::AST
# Are we the default option?
def default?
+ # Cache the @default value.
if defined? @default
return @default
end
@@ -38,13 +39,21 @@ class Puppet::Parser::AST
end
# You can specify a list of values; return each in turn.
- def eachvalue
+ def eachvalue(scope)
if @value.is_a?(AST::ASTArray)
@value.each { |subval|
- yield subval.value
+ if scope
+ yield subval.evaluate(:scope => scope)
+ elsif subval.is_a? AST::Leaf
+ yield subval.value
+ end
}
else
- yield @value.value
+ if scope
+ yield @value.evaluate(:scope => scope)
+ elsif @value.is_a? AST::Leaf
+ yield @value.value
+ end
end
end