# File lib/puppet/parser/ast/leaf.rb, line 141 def array_index_or_key(object, key) if object.is_a?(Array) raise Puppet::ParserError, "#{key} is not an integer, but is used as an index of an array" unless key = Puppet::Parser::Scope.number?(key) end key end
Assign value to this hashkey or array index
# File lib/puppet/parser/ast/leaf.rb, line 158 def assign(scope, value) object = evaluate_container(scope) accesskey = evaluate_key(scope) if object.is_a?(Hash) and object.include?(accesskey) raise Puppet::ParseError, "Assigning to the hash '#{variable}' with an existing key '#{accesskey}' is forbidden" end # assign to hash or array object[array_index_or_key(object, accesskey)] = value end
# File lib/puppet/parser/ast/leaf.rb, line 148 def evaluate(scope) object = evaluate_container(scope) accesskey = evaluate_key(scope) raise Puppet::ParseError, "#{variable} is not an hash or array when accessing it with #{accesskey}" unless object.is_a?(Hash) or object.is_a?(Array) object[array_index_or_key(object, accesskey)] || :undef end
# File lib/puppet/parser/ast/leaf.rb, line 132 def evaluate_container(scope) container = variable.respond_to?(:evaluate) ? variable.safeevaluate(scope) : variable (container.is_a?(Hash) or container.is_a?(Array)) ? container : scope[container, {:file => file, :line => line}] end
# File lib/puppet/parser/ast/leaf.rb, line 137 def evaluate_key(scope) key.respond_to?(:evaluate) ? key.safeevaluate(scope) : key end
# File lib/puppet/parser/ast/leaf.rb, line 170 def to_s "\$#{variable.to_s}[#{key.to_s}]" end