Sha256: b9f1ff0a8cae571f6cd7c9cf1e716703842a917598f039d272c13ca475759ca7

Contents?: true

Size: 1.28 KB

Versions: 1

Compression:

Stored size: 1.28 KB

Contents

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(&block)
        yield(@header_element)
      end

      def body(&block)
        yield(@body_element)
      end

      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

      # Should header and footer segments be added to total_segments?
      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

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
eancom-2.0.0 lib/eancom/edifact/document.rb