Class: SaxStream::Internal::FieldMappings

Inherits:
Object
  • Object
show all
Defined in:
lib/sax_stream/internal/field_mappings.rb

Defined Under Namespace

Classes: MappingOptions

Instance Method Summary collapse

Constructor Details

#initializeFieldMappings

Returns a new instance of FieldMappings.



50
51
52
# File 'lib/sax_stream/internal/field_mappings.rb', line 50

def initialize
  @mappings ||= CoreExtensions::OrderedHash.new
end

Instance Method Details

#class_mappingsObject



69
70
71
# File 'lib/sax_stream/internal/field_mappings.rb', line 69

def class_mappings
  @mappings
end

#field_mapping(key, attributes = []) ⇒ Object



73
74
75
76
77
78
79
80
81
82
83
84
# File 'lib/sax_stream/internal/field_mappings.rb', line 73

def field_mapping(key, attributes = [])
  result = find_non_regex_mapping(key) || regex_field_mapping(key)

  unless result.is_a?(Array)
    result = [result]
  end
  result.compact!

  result.detect do |one_result|
    one_result.element if one_result.allows_mapping?(key, attributes)
  end
end

#store(key, mapping) ⇒ Object



54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/sax_stream/internal/field_mappings.rb', line 54

def store(key, mapping)
  parsed_key = build_key_from_array(key)
  new_value = MappingOptions.new(mapping, key)

  if class_mappings[parsed_key]
    unless class_mappings[parsed_key].is_a?(Array)
      old_value = class_mappings[parsed_key]
      class_mappings[parsed_key] = [old_value]
    end
    class_mappings[parsed_key] << new_value
  else
    class_mappings[parsed_key] = new_value
  end
end