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