summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/puppet/parser/scope.rb4
-rwxr-xr-xspec/unit/parser/scope_spec.rb12
2 files changed, 16 insertions, 0 deletions
diff --git a/lib/puppet/parser/scope.rb b/lib/puppet/parser/scope.rb
index 7b75ca86b..3a87f964b 100644
--- a/lib/puppet/parser/scope.rb
+++ b/lib/puppet/parser/scope.rb
@@ -82,6 +82,10 @@ class Puppet::Parser::Scope
compiler.catalog
end
+ def each
+ to_hash.each { |name, value| yield(name, value) }
+ end
+
# Proxy accessors
def host
@compiler.node.name
diff --git a/spec/unit/parser/scope_spec.rb b/spec/unit/parser/scope_spec.rb
index 887890ead..78feaf08b 100755
--- a/spec/unit/parser/scope_spec.rb
+++ b/spec/unit/parser/scope_spec.rb
@@ -122,6 +122,18 @@ describe Puppet::Parser::Scope do
@scope.should_not be_include("var")
end
+ it "should support iteration over its variables" do
+ @scope["one"] = "two"
+ @scope["three"] = "four"
+ hash = {}
+ @scope.each { |name, value| hash[name] = value }
+ hash.should == {"one" => "two", "three" => "four" }
+ end
+
+ it "should include Enumerable" do
+ @scope.singleton_class.ancestors.should be_include(Enumerable)
+ end
+
describe "and the variable is qualified" do
before do
@compiler = Puppet::Parser::Compiler.new(Puppet::Node.new("foonode"))