last few uses
[mirror/dsa-puppet.git] / files / etc / puppet / lib / puppet / parser / functions / extractnodeinfo.rb
index d12386f..19f0ca8 100644 (file)
@@ -1,13 +1,23 @@
 module Puppet::Parser::Functions
   newfunction(:extractnodeinfo, :type => :rvalue) do |args|
 
-    nodeinfo = args[0]
-    key      = args[1]
+    nodeinfo = args.shift
 
-    if nodeinfo.has_key?(key)
-      return nodeinfo[key]
-    else
-      return "false"
+    ni = nodeinfo
+    keys_done = []
+
+    args.each do |key|
+      raise Puppet::ParseError, "nodeinfo is not a hash at #{keys_done.join('->')}" unless ni.kind_of?(Hash)
+      unless ni.has_key?(key)
+        ni = false
+        break
+      end
+      ni = ni[key]
+      keys_done << key
     end
+    return ni
   end
 end
+# vim:set et:
+# vim:set sts=2 ts=2:
+# vim:set shiftwidth=2: