Sha256: 79ca8cb4ff809de0642bd8e7358d73f465022a0f25505019847343308c34557a
Contents?: true
Size: 1.46 KB
Versions: 1
Compression:
Stored size: 1.46 KB
Contents
require "gyoku" module Savon class QualifiedMessage def initialize(types, used_namespaces, key_converter) @types = types @used_namespaces = used_namespaces @key_converter = key_converter end def to_hash(hash, path) return unless hash return hash.map { |value| to_hash(value, path) } if hash.is_a?(Array) return hash.to_s unless hash.is_a?(Hash) hash.each_with_object({}) do |(key, value), newhash| case key when :order! newhash[key] = add_namespaces_to_values(value, path) when :attributes!, :content! newhash[key] = to_hash(value, path) else if key.to_s =~ /!$/ newhash[key] = value else translated_key = translate_tag(key) newkey = add_namespaces_to_values(key, path).first newpath = path + [translated_key] newhash[newkey] = to_hash(value, newpath) end end newhash end end private def translate_tag(key) Gyoku.xml_tag(key, :key_converter => @key_converter).to_s end def add_namespaces_to_values(values, path) Array(values).collect do |value| translated_value = translate_tag(value) namespace_path = path + [translated_value] namespace = @used_namespaces[namespace_path] namespace.blank? ? value : "#{namespace}:#{translated_value}" end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
savon-2.11.2 | lib/savon/qualified_message.rb |