From: Sapan Bhatia Date: Tue, 27 Oct 2009 02:19:29 +0000 (+0000) Subject: Fixed a bug we ran into a demo with Andy. Stop on terminal rules ONLY if it has matched. X-Git-Tag: sfa-0.9-6~103 X-Git-Url: http://git.onelab.eu/?p=sfa.git;a=commitdiff_plain;h=740ac677f9029cbd5697ff7e29330d0c30fd63d4 Fixed a bug we ran into a demo with Andy. Stop on terminal rules ONLY if it has matched. --- diff --git a/sfatables/runtime.py b/sfatables/runtime.py index b76ec0a8..ef3ccc42 100644 --- a/sfatables/runtime.py +++ b/sfatables/runtime.py @@ -74,8 +74,8 @@ class SFATablesRules: intermediate_rspec = doc for rule in self.sorted_rule_list: - intermediate_rspec = rule.apply_interpreted(intermediate_rspec) - if (rule.terminal): + (matched,intermediate_rspec) = rule.apply_interpreted(intermediate_rspec) + if (rule.terminal and matched): break final_rspec = self.wrap_up(intermediate_rspec) diff --git a/sfatables/test.sfarspec b/sfatables/test.sfarspec index f0a856a5..a7173e86 100644 --- a/sfatables/test.sfarspec +++ b/sfatables/test.sfarspec @@ -1,6 +1,6 @@ - + @@ -10,4 +10,4 @@ - + diff --git a/sfatables/xmlrule.py b/sfatables/xmlrule.py index d8b30dcf..bd41dbfc 100644 --- a/sfatables/xmlrule.py +++ b/sfatables/xmlrule.py @@ -85,9 +85,9 @@ class XMLRule: # else rspec if (self.match(rspec)): - return self.wrap_up(self.target(rspec)) + return (True,self.wrap_up(self.target(rspec)) else: - return self.wrap_up(rspec) + return (False,self.wrap_up(rspec)) def apply_compiled(rspec):