# File lib/edi4r/edifact.rb, line 1211 def Message.parse (parent, segment_list) if parent.root.is_iedi? h, t, re_t = 'UIH', 'UIT', /^UIT/ else h, t, re_t = 'UNH', 'UNT', /^UNT/ end # Segments comprise a single message # Temporarily assign a parent, or else service segment lookup fails header = parent.parse_segment(segment_list.shift, h) msg = parent.new_message(header) trailer = msg.parse_segment( segment_list.pop, t ) segment_list.each do |segbuf| seg = Segment.parse( msg, segbuf ) if segbuf =~ re_t # FIXME: Should that case ever occur? msg.trailer = seg else msg.add(seg) end end msg.trailer = trailer msg end