Try to make extractnodeinfo accept more than one level of hash keys
[mirror/dsa-puppet.git] / files / etc / puppet / lib / puppet / parser / functions / extractnodeinfo.rb
1 module Puppet::Parser::Functions
2   newfunction(:extractnodeinfo, :type => :rvalue) do |args|
3
4     nodeinfo = args.shift
5
6     ni = nodeinfo
7     keys_done = []
8
9     args.each do |key|
10       raise Puppet::ParseError, "nodeinfo is not a hash at #{keys_done.join('->')}" unless ni.kind_of?(Hash)
11       return false unless ni.has_key?(key)
12       ni = ni[key]
13       keys_done << key
14     end
15     return ni
16   end
17 end