class CloudPayments::Client::Serializer::Base
Attributes
config[R]
Public Class Methods
new(config)
click to toggle source
# File lib/cloud_payments/client/serializer/base.rb, line 8 def initialize(config) @config = config end
Public Instance Methods
dump(hash)
click to toggle source
# File lib/cloud_payments/client/serializer/base.rb, line 16 def dump(hash) convert_keys_to_api(hash) end
load(json)
click to toggle source
# File lib/cloud_payments/client/serializer/base.rb, line 12 def load(json) convert_keys_from_api(json) end
Protected Instance Methods
convert_keys_from_api(attributes)
click to toggle source
# File lib/cloud_payments/client/serializer/base.rb, line 22 def convert_keys_from_api(attributes) attributes.each_with_object({}) do |(key, value), result| value = case value when Hash convert_keys_from_api(value) when Array value.map { |item| convert_keys_from_api(item) } else value end key = key.to_s.gsub(/([A-Z\d]+)([A-Z][a-z])/, '\1_\2') key.gsub!(/([a-z\d])([A-Z])/, '\1_\2') key.tr!('-', '_') key.downcase! result[key.to_sym] = value end end
convert_keys_to_api(attributes)
click to toggle source
# File lib/cloud_payments/client/serializer/base.rb, line 41 def convert_keys_to_api(attributes) attributes.each_with_object({}) do |(key, value), result| value = convert_keys_to_api(value) if value.is_a?(Hash) key = key.to_s.gsub(/^[a-z\d]*/){ $&.capitalize } key.gsub!(/(?:_|(\/))([a-z\d]*)/i){ "#{$1}#{$2.capitalize}" } key.gsub!('/', '::') result[key] = value end end