Class: Metro2::Records::BaseSegment

Inherits:
Record
  • Object
show all
Defined in:
lib/metro_2/records/base_segment.rb

Constant Summary collapse

LENGTH =
Metro2::FIXED_LENGTH

Instance Method Summary collapse

Methods inherited from Record

fields, #validate_fields

Methods included from Fields

#alphanumeric_const_field, #alphanumeric_field, #date_field, #monetary_field, #numeric_const_field, #numeric_field, #timestamp_field

Constructor Details

#initializeBaseSegment

Returns a new instance of BaseSegment.



56
57
58
# File 'lib/metro_2/records/base_segment.rb', line 56

def initialize
  @appendages = []
end

Instance Method Details

#j1_segmentObject



69
70
71
# File 'lib/metro_2/records/base_segment.rb', line 69

def j1_segment
  @j1_segment
end

#j1_segment=(segment) ⇒ Object



73
74
75
76
# File 'lib/metro_2/records/base_segment.rb', line 73

def j1_segment=(segment)
  @j1_segment = segment
  @appendages << @j1_segment
end

#j2_segmentObject



78
79
80
# File 'lib/metro_2/records/base_segment.rb', line 78

def j2_segment
  @j2_segment
end

#j2_segment=(segment) ⇒ Object



82
83
84
85
# File 'lib/metro_2/records/base_segment.rb', line 82

def j2_segment=(segment)
  @j2_segment = segment
  @appendages << @j2_segment
end

#k2_segmentObject



60
61
62
# File 'lib/metro_2/records/base_segment.rb', line 60

def k2_segment
  @k2_segment
end

#k2_segment=(segment) ⇒ Object



64
65
66
67
# File 'lib/metro_2/records/base_segment.rb', line 64

def k2_segment=(segment)
  @k2_segment = segment
  @appendages << @k2_segment
end

#set_record_descriptor_wordObject



93
94
95
# File 'lib/metro_2/records/base_segment.rb', line 93

def set_record_descriptor_word
  self.record_descriptor_word = LENGTH + @appendages.sum { |appendage| appendage.class::LENGTH }
end

#to_metro2Object



87
88
89
90
91
# File 'lib/metro_2/records/base_segment.rb', line 87

def to_metro2
  @appendages.compact!
  set_record_descriptor_word
  super + @appendages.map(&:to_metro2).join
end