diff options
Diffstat (limited to 'lib/puppet/parser/loaded_code.rb')
-rw-r--r-- | lib/puppet/parser/loaded_code.rb | 23 |
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? |