Module: L43Peg::Combinators::Sequence

Extended by:
Sequence
Included in:
Sequence
Defined in:
lib/l43_peg/combinators/sequence.rb

Instance Method Summary collapse

Instance Method Details

#sequence(*parsers, name: nil, flatten: false, join: false, box: nil, &mapper) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
# File 'lib/l43_peg/combinators/sequence.rb', line 8

def sequence(*parsers, name: nil, flatten: false, join: false, box: nil, &mapper)
  name ||= "sequence(#{parsers.flatten.map(&:name).join(", ")})"
  parser = Parser.new(name) {|input, _name=nil| _seq(input:, name:, parsers: parsers.flatten, flatten:, join:)}
  if mapper
    parser.map(name:, box:, &mapper)
  elsif box
    parser.map(name) { Box.make(box).new(it) } 
  else
    parser
  end
end