From f51a5c8d5c85841d132c4152c3d7deca6da9c614 Mon Sep 17 00:00:00 2001 From: Brian Ford Date: Sun, 24 Oct 2010 11:41:42 -0700 Subject: [PATCH] Implement Any in Evaluator. --- lib/pegarus/evaluator.rb | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/lib/pegarus/evaluator.rb b/lib/pegarus/evaluator.rb index a4ecfbe..dd559a4 100644 --- a/lib/pegarus/evaluator.rb +++ b/lib/pegarus/evaluator.rb @@ -15,12 +15,32 @@ def match(subject) end def match(pattern, subject) + @subject = subject + @failure = false + @index = 0 + + pattern.visit self + + failure? ? nil : @index + end + + def failure + @failure = true + end + + def failure? + @failure end def always(pattern) end def any(pattern) + if @subject.size > @index + pattern.count + @index += pattern.count + else + failure + end end def any_range(pattern)