Class: SavonHelper::ArrayMapping

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

Overview

ArrayMapping maps Savon data to Ruby Arrays

Converting collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from TypeMapping

#description, #to_savon, #warn_unparseable_data

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: '')


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

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

Class Method Details

.to_native(element_mapping, data, interface) ⇒ 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>)


405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
# File 'lib/savon_helper/type_mappings.rb', line 405

def self.to_native(element_mapping, data, interface)
  return [] if data.blank?
  result = []
  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)
    end
  else
    result = warn_unparseable_data(data, interface)
  end
  result
end

Instance Method Details

#default_valueObject

This method is abstract.

Return the default value the mapping.

Returns:



459
460
461
# File 'lib/savon_helper/type_mappings.rb', line 459

def default_value
  []
end

#object_klassClass

Return the class represented by the mapping.

Returns:

  • (Class)


447
448
449
# File 'lib/savon_helper/type_mappings.rb', line 447

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>)


439
440
441
# File 'lib/savon_helper/type_mappings.rb', line 439

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

#type_stringString

Return the class description represented by the mapping.

Returns:



453
454
455
# File 'lib/savon_helper/type_mappings.rb', line 453

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