diff options
Diffstat (limited to 'src/__OLD_parcom/satisfy.cr')
| -rw-r--r-- | src/__OLD_parcom/satisfy.cr | 33 |
1 files changed, 0 insertions, 33 deletions
diff --git a/src/__OLD_parcom/satisfy.cr b/src/__OLD_parcom/satisfy.cr deleted file mode 100644 index 9734635..0000000 --- a/src/__OLD_parcom/satisfy.cr +++ /dev/null @@ -1,33 +0,0 @@ -require "./parser.cr" -require "./any_token.cr" -require "./assert.cr" - -module Parcom - # `Satisfy` is a `Parser` that parses a single token - # if that token passes a predefined test, similar - # to `Assert`. This class is effectively a shorthand - # for the following: - # ``` - # # These parsers are equivalent. - # letter_assert = Assert.new(AnyToken(Char).new) { |x| x.letter? } - # letter_satisfy = Satisfy(Char).new { |x| x.letter? } - # ``` - class Satisfy(T) < Parser(T, T) - @p : Assert(T, T) - - # Accepts the `Bool`-returning block containing the test - # to run on the parsed token. - def initialize(&block : T -> Bool) - @p = AnyToken(T).new.assert(&block) - end - - # Returns the first token of the input if that - # token passes the test. - def parse(tokens : Tokens(T)) : Result(T, T) - @p.parse(tokens) - rescue ex : ParserFail - raise ParserFail.new("Satisfy: #{ex.message}") - end - end -end - |
