class Eancom::Parser::Document

Attributes

document[R]
file[R]

Public Class Methods

new(file:) click to toggle source
# File lib/eancom/parser/document.rb, line 8
def initialize(file:)
  @file = file
  @document = Eancom::Edifact::Document.new
end

Public Instance Methods

parse() click to toggle source
# File lib/eancom/parser/document.rb, line 13
def parse
  content.split(segment_delimiter).each do |segment_string|
    segment = Parser::Segment.new(segment_string)
    segment = segment.parse
    add(segment)
  end
  @document
end

Private Instance Methods

add(segment) click to toggle source
# File lib/eancom/parser/document.rb, line 24
def add(segment)
  if segment.is_header?
    @document.add_to_header(segment)
  elsif segment.is_body?
    @document.add_to_body(segment)
  elsif segment.is_footer?
    @document.add_to_body(segment)
  else
    raise SegmentTypeNotDefined
  end
end
composite_delimiter() click to toggle source
# File lib/eancom/parser/document.rb, line 47
def composite_delimiter
  DELIMITERS[:data]
end
content() click to toggle source
# File lib/eancom/parser/document.rb, line 36
def content
  @content ||= begin
    @file.rewind
    string = convert(@file.read)
    string.delete!("\n")
    string.delete!("\r")
    string.chomp!
    string
  end
end
convert(string) click to toggle source
# File lib/eancom/parser/document.rb, line 55
def convert(string)
  string.encode('UTF-8')
end
segment_delimiter() click to toggle source
# File lib/eancom/parser/document.rb, line 51
def segment_delimiter
  DELIMITERS[:segment]
end