class SafeYAML::Resolver
def resolve_map(node)
def resolve_map(node) tag = get_and_check_node_tag(node) hash = @initializers.include?(tag) ? @initializers[tag].call : {} map = normalize_map(self.get_node_value(node)) # Take the "<<" key nodes first, as these are meant to approximate a form of inheritance. inheritors = map.select { |key_node, value_node| resolve_node(key_node) == "<<" } inheritors.each do |key_node, value_node| merge_into_hash(hash, resolve_node(value_node)) end # All that's left should be normal (non-"<<") nodes. (map - inheritors).each do |key_node, value_node| hash[resolve_node(key_node)] = resolve_node(value_node) end return hash end