lib/eancom/edifact/document.rb in eancom-0.1.0 vs lib/eancom/edifact/document.rb in eancom-1.1.0

- old
+ new

@@ -1,28 +1,60 @@ module Eancom module Edifact class Document + attr_accessor :header_element, + :body_element, :footer_element + def initialize - @envelope = Envelope.new - @message = Message.new + @header_element = Header.new() + @body_element = Body.new() + @footer_element = Footer.new() end - def envelope(&block) - yield(@envelope) + def header(&block) + yield(@header_element) end - def message(name, &block) - @message.name = name - yield(@message) + def body(&block) + yield(@body_element) end - def to_s - stream = "" - stream << @envelope.to_s - stream << @message.to_s + def footer(&block) + yield(@footer_element) + end + + def add_to_header(segment) + @header_element.segment(segment) + end + + def add_to_body(segment) + @body_element.segment(segment) + end + + def add_to_footer(segment) + @footer_element.segment(segment) + end + + def total_segments + total = 0 + total += @body_element.segments.count + total + end + + def to_s(debug: false) + stream = '' + stream << @header_element.to_s(debug: debug) + stream << @body_element.to_s(debug: debug) + stream << @footer_element.to_s(debug: debug) stream end + def to_json + hash = {} + hash.merge! @header_element.to_json_hash + hash.merge! @body_element.to_json_hash + hash.to_json + end end end end