From ce254c83be3cf613a8f655f55f2207073404148f Mon Sep 17 00:00:00 2001 From: Matthew Hall Date: Thu, 9 Mar 2023 00:49:16 +1300 Subject: Rewrite Assert to use blocks --- src/parcom.cr | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/parcom.cr b/src/parcom.cr index dbdd44d..3aed672 100644 --- a/src/parcom.cr +++ b/src/parcom.cr @@ -67,9 +67,12 @@ module Parcom Plus.new(self, other) end - # TODO: allow/change to support block invocation def assert(f : V -> Bool) - Assert.new(self, f) + Assert.new(self, &f) + end + + def assert(&block : V -> Bool) + Assert.new(self, &block) end # TODO: allow/change to support block invocation @@ -118,9 +121,9 @@ module Parcom end end - # TODO: allow/change to support block invocation class Assert(T, V) < Parser(T, V) - def initialize(@p : Parser(T, V), @f : V -> Bool) + def initialize(@p : Parser(T, V), &block : V -> Bool) + @f = block end def parse(tokens : TokenStream(T)) : Result(T, V) @@ -212,7 +215,6 @@ module Parcom end end - # TODO: find a way to make this use Recover on the back end class Optional(T, V) < Parser(T, V?) def initialize(@p : Parser(T, V)) end -- cgit v1.2.1