summaryrefslogtreecommitdiffstats
path: root/lib/puppet/parser/loaded_code.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/puppet/parser/loaded_code.rb')
-rw-r--r--lib/puppet/parser/loaded_code.rb23
1 files changed, 15 insertions, 8 deletions
diff --git a/lib/puppet/parser/loaded_code.rb b/lib/puppet/parser/loaded_code.rb
index 111e8ea1b..065fcb99c 100644
--- a/lib/puppet/parser/loaded_code.rb
+++ b/lib/puppet/parser/loaded_code.rb
@@ -3,6 +3,9 @@ class Puppet::Parser::LoadedCode
@hostclasses = {}
@definitions = {}
@nodes = {}
+
+ # So we can keep a list and match the first-defined regex
+ @node_list = []
end
def add_hostclass(name, code)
@@ -14,19 +17,23 @@ class Puppet::Parser::LoadedCode
end
def add_node(name, code)
- @nodes[check_name(name)] = code
+ name = check_name(name)
+ @node_list << name unless @node_list.include?(name)
+ @nodes[name] = code
end
def node(name)
name = check_name(name)
- unless node = @nodes[name]
- @nodes.each do |nodename, n|
- if nodename.regex? and nodename.match(name)
- return n
- end
- end
+
+ if node = @nodes[name]
+ return node
+ end
+
+ @node_list.each do |nodename|
+ n = @nodes[nodename]
+ return n if nodename.regex? and nodename.match(name)
end
- node
+ nil
end
def nodes?