Module: Baldr::Renderer::X12

Extended by:
X12
Included in:
X12
Defined in:
lib/baldr/renderer/x12.rb

Constant Summary collapse

DEFAULT_SEPARATORS =
{
  element: '*',
  segment: '~',
  component: '>',
}.freeze

Instance Method Summary collapse

Instance Method Details

#draw(segments, params = {}) ⇒ Object



11
12
13
14
15
16
# File 'lib/baldr/renderer/x12.rb', line 11

def draw(segments, params = {})
  segments = Array.wrap(segments)
  separators = params[:separators] || DEFAULT_SEPARATORS
  separators[:segment] = separators[:segment].pack('c*') if separators[:segment].is_a?(Array)
  segments.map{ |s| draw_segment(s, separators).join }.join
end

#draw_loop(loop, separators) ⇒ Object



24
25
26
# File 'lib/baldr/renderer/x12.rb', line 24

def draw_loop(loop, separators)
  loop.segments.map { |s| draw_segment(s, separators) }
end

#draw_segment(segment, separators) ⇒ Object



18
19
20
21
22
# File 'lib/baldr/renderer/x12.rb', line 18

def draw_segment(segment, separators)
  a = [segment.id] + segment.elements.reverse.drop_while{ |i| i.nil? }.reverse

  ["#{a.join(separators[:element])}#{separators[:segment]}"] + segment.children.map{ |l| draw_loop(l, separators) }
end