class Eancom::Edifact::Body

Attributes

hash[RW]
items[RW]
messages[RW]

Public Class Methods

new() click to toggle source
Calls superclass method
# File lib/eancom/edifact/body.rb, line 7
def initialize
  super
  @hash = {}
  @messages = []
end

Public Instance Methods

start_item(segment) click to toggle source
# File lib/eancom/edifact/body.rb, line 40
def start_item(segment)
  if @item && !@item.empty?
    @message.add_item(@item.to_json_hash)
  end
  @item = Eancom::Edifact::Item.new()
end
start_message(segment) click to toggle source
# File lib/eancom/edifact/body.rb, line 29
def start_message(segment)
  if @message
    @messages << @message.to_json_hash
    if @item && !@item.empty?
      @message.add_item(@item.to_json_hash)
    end
    @item = nil
  end
  @message = Eancom::Edifact::Message.new()
end
to_json_hash() click to toggle source
# File lib/eancom/edifact/body.rb, line 13
def to_json_hash
  @segments.each do |segment|
    start_message(segment) if segment.starts_message?
    start_item(segment) if segment.starts_item?
    if @item
      @item << segment
    else
      @message << segment
    end
  end
  @message.add_item(@item.to_json_hash)
  @messages << @message.to_json_hash
  hash.merge!({ messages: messages })
  { body: hash }
end

Private Instance Methods

group_name(segment) click to toggle source
# File lib/eancom/edifact/body.rb, line 58
def group_name(segment)
  return segment.group_name
end
merge(hash, segment) click to toggle source
# File lib/eancom/edifact/body.rb, line 49
def merge(hash, segment)
  if name = group_name(segment)
    hash[name] = [] if hash[name].nil?
    hash[name] << segment.to_json_hash
  else
    hash.merge!(segment.to_json_hash)
  end
end