Method: MessagePack::IDL::ParsletParser.sequence

Defined in:
lib/msgpack/idl/parser/rule.rb

.sequence(name, separator, element, min = 0) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
# File 'lib/msgpack/idl/parser/rule.rb', line 24

def sequence(name, separator, element, min=0)
  if min == 0
    eval %[rule(:#{name.to_s.dump}) {
      (#{element}.as(:sequence_x) >> (#{separator} >> #{element}.as(:sequence_xs)).repeat).maybe.as(:sequence)
    }]
  else
    eval %[rule(:#{name.to_s.dump}) {
      (#{element}.as(:sequence_x) >> (#{separator} >> #{element}.as(:sequence_xs)).repeat(#{min-1})).as(:sequence)
    }]
  end
end