Module: L43Peg::Combinators::Map

Extended by:
Map
Included in:
Map
Defined in:
lib/l43_peg/combinators/map.rb

Instance Method Summary collapse

Instance Method Details

#map(parser, name: nil, fn: nil, box: nil, &mapper) ⇒ Object

Raises:

  • (ArgumentError)


6
7
8
9
10
11
12
# File 'lib/l43_peg/combinators/map.rb', line 6

def map(parser, name: nil, fn: nil, box: nil, &mapper)
  raise ArgumentError, "must not provide keyword parameter fn and a block" if fn && mapper
  mapper = fn || mapper
  raise ArgumentError, "must provide one of the keyword parameters [fn:, box:] or a block" unless mapper || box
  mapper ||= :itself
  Parser.new(name || "map(#{parser.name})") {|input, name=nil| _map(input:, name:, parser:, box:, mapper:)}
end