class Eancom::Parser::Segment

Attributes

components[RW]
string[RW]
tag[RW]

Public Class Methods

new(string) click to toggle source
# File lib/eancom/parser/segment.rb, line 7
def initialize(string)
  @string = string
  @components = []
end

Public Instance Methods

parse() click to toggle source
# File lib/eancom/parser/segment.rb, line 12
def parse
  parse_component
  klass = find_segment_class
  structure = find_structure
  klass.initialize_by_components(structure, @components)
end

Private Instance Methods

component_delimiter() click to toggle source
# File lib/eancom/parser/segment.rb, line 65
def component_delimiter
  DELIMITERS[:component]
end
data_delimiter() click to toggle source
# File lib/eancom/parser/segment.rb, line 61
def data_delimiter
  DELIMITERS[:data]
end
find_segment_class() click to toggle source
# File lib/eancom/parser/segment.rb, line 53
def find_segment_class
  Eancom.find_segment(tag: tag)
end
find_structure() click to toggle source
# File lib/eancom/parser/segment.rb, line 57
def find_structure
  Eancom.find_structure(tag: tag)
end
parse_component() click to toggle source
# File lib/eancom/parser/segment.rb, line 21
def parse_component
 if string =~ /^UNA/
   parse_una
 else
    string.split(data_delimiter).each do |data|
      components << parse_data(data)
    end
 end
end
parse_data(data) click to toggle source
# File lib/eancom/parser/segment.rb, line 31
def parse_data(data)
  component = []
  data.split(component_delimiter).each do |c|
    component << c
  end
  component
end
parse_una() click to toggle source
# File lib/eancom/parser/segment.rb, line 39
def parse_una
  components << [string[0..2]]
  components << [string[3]]
  components << [string[4]]
  components << [string[5]]
  components << [string[6]]
  components << [string[7]]
  components << [DELIMITERS[:segment]]
end