class EDI::S::StreamingBuilder

Class StreamingBuilder

The StreamingBuilder parses the input stream just like StreamingParser and in addition builds the complete interchange.

This method is the new basis of Interchange.parse. You might want to study its callbacks to get some ideas on how to create a special-purpose parser/builder of your own.

Public Class Methods

new(auto_validate=true) click to toggle source
# File lib/edi4r/sedas.rb, line 782
def initialize(auto_validate=true)
  @ic = nil
  @curr_group = @curr_msg = nil
  @una = nil
  @is_iedi = false
  @auto_validate = auto_validate
end

Public Instance Methods

interchange() click to toggle source
# File lib/edi4r/sedas.rb, line 791
def interchange
  @ic
end
on_00( s ) click to toggle source
# File lib/edi4r/sedas.rb, line 796
def on_00( s )
  @ic = Interchange.new
  @ic.header = @ic.parse_segment( s )
end
on_01( s ) click to toggle source
# File lib/edi4r/sedas.rb, line 805
def on_01( s )
  @curr_group = @ic.new_msggroup( @ic.parse_segment( s ) )
  @curr_group.header = @curr_group.parse_segment( s )
end
on_98( s ) click to toggle source
# File lib/edi4r/sedas.rb, line 810
def on_98( s )
  self.on_msg_end if @msg_begun
  @curr_group.trailer = @curr_group.parse_segment( s )
  @ic.add( @curr_group, @auto_validate )
end
on_99( s ) click to toggle source
# File lib/edi4r/sedas.rb, line 801
def on_99( s )
  @ic.trailer = @ic.parse_segment( s )
end
on_interchange_end() click to toggle source
# File lib/edi4r/sedas.rb, line 843
def on_interchange_end
  if @auto_validate
    @ic.header.validate
    @ic.trailer.validate
    # Content is already validated through @ic.add() and @curr_group.add()
  end
end
on_msg_end() click to toggle source
# File lib/edi4r/sedas.rb, line 822
def on_msg_end
  @curr_group.add( @curr_msg )
  @msg_begun = false
  @msg_29_nr = nil
end
on_msg_start( s ) click to toggle source
# File lib/edi4r/sedas.rb, line 816
    def on_msg_start( s )
      @curr_msg = @curr_group.new_message( :sedas_type => s[0,2] )
      @msg_begun = true
#      @curr_msg.header = Segment.parse( @curr_msg, s )
    end
on_other( s ) click to toggle source
# File lib/edi4r/sedas.rb, line 839
def on_other( s )
  warn "Empty record/line found - ignored!"
end
on_segment( s, tag ) click to toggle source

Overwrite this method to react on segments of interest

Note: For a skeleton Builder (just UNB/UNG/UNT etc), overwrite with an empty method.

Calls superclass method EDI::S::StreamingParser#on_segment
# File lib/edi4r/sedas.rb, line 833
def on_segment( s, tag )
  @curr_msg.add @curr_msg.parse_segment( s )
  super
end