From 800a78b993f15e2d77312bf207929ec876e9b227 Mon Sep 17 00:00:00 2001 From: Luke Kanies Date: Tue, 1 Sep 2009 00:20:15 -0700 Subject: The first regex node now matches first Before it was undefined, but now we always match the first defined node. Signed-off-by: Luke Kanies --- lib/puppet/parser/loaded_code.rb | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) (limited to 'lib/puppet/parser') 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? -- cgit