Sha256: e5c761299a6f2b565d5f2e058ed125c2be46aa473167e8d3f9f25e246477fe1f

Contents?: true

Size: 433 Bytes

Versions: 2

Compression:

Stored size: 433 Bytes

Contents

# frozen_string_literal: true

module Farseer
  class Many
    include MapFactory

    def initialize(parser)
      @parser = parser
      freeze
    end

    def parse(input)
      @parser.parse(input)
             .bind { |r| helper(r.rest, r.token) }
    end

    def helper(input, tokens)
      parse(input)
        .bind { |r| helper(r.rest, tokens + r.token) }
        .map_none { Result.new(tokens, input) }
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
farseer-0.9.0 lib/farseer/many.rb
farseer-0.8.0 lib/farseer/many.rb