4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
# File 'lib/hippo/parser/segment.rb', line 4
def parse(input)
input.gsub!(/[\a\e\f\n\r\t\v]/,'')
fields = input.split(@field_separator)
segment_identifier = fields.shift
fields.each_with_index do |value, index|
field = self.class.fields[index]
if field.class == Array
composite_fields = value.split(@composite_separator)
composite_sequence = field.first.composite_sequence
self.values[composite_sequence] = {}
composite_fields.each_with_index do |comp_value, comp_index|
composite_field = field[comp_index]
self.values[composite_sequence][composite_field.sequence] = composite_field.formatted_value(comp_value)
end
else
self.values[field.sequence] = field.formatted_value(value)
end
end
self
end
|