Class: SavonHelper::ArrayMapping

Inherits:
TypeMapping show all
Defined in:
lib/savon_helper/type_mappings.rb

Overview

ArrayMapping maps Savon data to Ruby Arrays

Instance Attribute Summary

Attributes inherited from TypeMapping

#description, #name

Converting collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from TypeMapping

#to_savon

Constructor Details

#initialize(element_mapping, name = '', description = '') ⇒ ArrayMapping

A new instance of TypeMapping with description

Parameters:

  • element_mapping (TypeMapping)

    A TypeMapping for elements

  • description (String) (defaults to: '')


419
420
421
422
# File 'lib/savon_helper/type_mappings.rb', line 419

def initialize(element_mapping, name='', description='')
  super(name, description)
  @element_mapping = element_mapping
end

Class Method Details

.to_native(element_mapping, data, interface, array_mapping = nil) ⇒ Array<element_mapping>

Convert the given Savon data to an Array consisting of elements described by element_mapping

Parameters:

  • element_mapping (TypeMapping)

    TypeMapping for elements

  • data (Hash, Array)

    Source Savon Data

Returns:

  • (Array<element_mapping>)


392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
# File 'lib/savon_helper/type_mappings.rb', line 392

def self.to_native(element_mapping, data, interface, array_mapping = nil)
  result = []
  return result if data.blank?
  if data.is_a?(Array)
    data.each do |element|
      result << element_mapping.to_native(element, interface)
    end
  elsif data.is_a?(Hash)
    item = data[:item]
    if item.nil?
      result << element_mapping.to_native(data, interface)
    else
      result = to_native(element_mapping, item, interface, array_mapping)
    end
  else
    message = "Can't parse"
    message = message + " #{array_mapping.type_string} #{array_mapping.name.inspect}" if array_mapping
    message = message + ": #{data.inspect}"
    interface.logger.warn(message)
  end
  result
end

Instance Method Details

#default_valueObject

This method is abstract.

Return the default value the mapping.

Returns:



449
450
451
# File 'lib/savon_helper/type_mappings.rb', line 449

def default_value
  []
end

#object_klassClass

Return the class represented by the mapping.

Returns:

  • (Class)


437
438
439
# File 'lib/savon_helper/type_mappings.rb', line 437

def object_klass
  @element_mapping.object_klass
end

#to_native(data, interface) ⇒ Array<@element_mapping>

Convert from Savon data to Ruby value

Parameters:

  • data (Hash, Hash)

    Source Savon data

Returns:

  • (Array<@element_mapping>)


429
430
431
# File 'lib/savon_helper/type_mappings.rb', line 429

def to_native(data, interface)
  return self.class.to_native(@element_mapping, data, interface, self)
end

#type_stringString

Return the class description represented by the mapping.

Returns:



443
444
445
# File 'lib/savon_helper/type_mappings.rb', line 443

def type_string
  "Array<#{@element_mapping.type_string}>"
end