class EdifactConverter::Edifact
Constants
- ATTRIBUTES
- DummyElement
Public Class Methods
new(options = {})
click to toggle source
# File lib/edifact_converter/edifact.rb, line 17 def initialize(options = {}) options.each do |name, value| if ATTRIBUTES.include? name send "#{name}=", value else raise ArgumentError, 'Argument(#{name}) is not supported ' end end end
Public Instance Methods
parse(options = {}, &block)
click to toggle source
# File lib/edifact_converter/edifact.rb, line 27 def parse(options = {}, &block) return ast unless text handler = EdifactConverter::EDI2XML11::XmlHandler.new reader = EdifactConverter::EDI2XML11::EdiReader.new handler reader.parse_string text, properties xml = handler.xml insert_letters xml self.ast = AbstractSyntaxTree.new xml end
serialize(options = {}, &block)
click to toggle source
# File lib/edifact_converter/edifact.rb, line 37 def serialize(options = {}, &block) end
Private Instance Methods
dummy_element()
click to toggle source
# File lib/edifact_converter/edifact.rb, line 104 def dummy_element @dummy_element ||= DummyElement.new end
group_segments(content)
click to toggle source
# File lib/edifact_converter/edifact.rb, line 87 def group_segments(content) parent = dummy_element content.elements.each do |elm| case elm.name when /S[0-9]{2}/ parent = elm next end parent.add_child elm end end
insert_letter_content(letter)
click to toggle source
# File lib/edifact_converter/edifact.rb, line 71 def insert_letter_content(letter) parent = dummy_element letter.elements.each do |elm| case elm.name when "UNH" parent = elm.document.create_element "BrevIndhold" elm.add_next_sibling parent next when "UNT" parent = dummy_element end parent.add_child elm end letter.xpath("//BrevIndhold").each { |content| group_segments content } end
insert_letters(xml)
click to toggle source
# File lib/edifact_converter/edifact.rb, line 56 def insert_letters(xml) parent = dummy_element xml.root.elements.each do |elm| parent.add_child elm case elm.name when "UNB" parent = xml.create_element "Brev" elm.add_next_sibling parent when "UNT" parent = dummy_element end end xml.xpath("//Brev").each { |brev| insert_letter_content brev } end
properties()
click to toggle source
# File lib/edifact_converter/edifact.rb, line 43 def properties @properties ||= Hash.new do |hash,key| case key when :errors hash[key] = [] when :warnings hash[key] = [] else nil end end end