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