Module: L43Peg::Combinators::Sequence
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 |