Sha256: b57ec7d36374cafdf7934c937dadaf35a9eb2d28b852590d6b870b1118b5f4d9
Contents?: true
Size: 492 Bytes
Versions: 2
Compression:
Stored size: 492 Bytes
Contents
# frozen_string_literal: true module Farseer class Or include MapFactory def initialize(*parsers) @parsers = parsers.flatten freeze end def parse(input) case @parsers.length when 0 then Maybe.none when 1 then @parsers.first.parse(input) else parse_helper(input) end end def parse_helper(input) @parsers.reduce do |acc, parser| acc.parse(input).bind_none { parser.parse(input) } end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
farseer-0.9.0 | lib/farseer/or.rb |
farseer-0.8.0 | lib/farseer/or.rb |