# frozen_string_literal: true module Eancom module Edifact class Document attr_accessor :header_element, :body_element, :footer_element def initialize @header_element = Header.new @body_element = Body.new @footer_element = Footer.new end def header yield(@header_element) end def body yield(@body_element) end def footer 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) "#{@header_element.to_s(debug: debug)}#{@body_element.to_s(debug: debug)}#{@footer_element.to_s(debug: debug)}" end def to_json(_obj = nil) { **@header_element.to_json_hash, **@body_element.to_json_hash }.to_json end end end end