summaryrefslogtreecommitdiffstats
path: root/lib/puppet
diff options
context:
space:
mode:
authorLuke Kanies <luke@madstop.com>2009-09-01 00:20:15 -0700
committerLuke Kanies <luke@madstop.com>2009-09-01 00:20:15 -0700
commit800a78b993f15e2d77312bf207929ec876e9b227 (patch)
treeb56321378a756cac23efadb3c3a555dd35a8c669 /lib/puppet
parent6750aeb90a4d19a2cd1de3ff007f216d31c4e65d (diff)
downloadpuppet-800a78b993f15e2d77312bf207929ec876e9b227.tar.gz
puppet-800a78b993f15e2d77312bf207929ec876e9b227.tar.xz
puppet-800a78b993f15e2d77312bf207929ec876e9b227.zip
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 <luke@madstop.com>
Diffstat (limited to 'lib/puppet')
-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?