Author: pkluegl
Date: Thu Jun 16 16:19:34 2016
New Revision: 1748756
URL: http://svn.apache.org/viewvc?rev=1748756&view=rev
Log:
UIMA-4976
- fix anchoring
Modified:
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/block/ForEachBlock.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/AnnotationVariableExpression.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RutaAnnotationMatcher.java
uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/block/ForEachBlockTest.java
Modified:
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/block/ForEachBlock.java
URL:
http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/block/ForEachBlock.java?rev=1748756&r1=1748755&r2=1748756&view=diff
==============================================================================
---
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/block/ForEachBlock.java
(original)
+++
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/block/ForEachBlock.java
Thu Jun 16 16:19:34 2016
@@ -118,7 +118,10 @@ public class ForEachBlock extends RutaBl
} else if (ruleElement instanceof ComposedRuleElement) {
List<RuleElement> ruleElements = ((ComposedRuleElement)
ruleElement).getRuleElements();
for (RuleElement eachInnerRuleElement : ruleElements) {
- return setRuleElementAnchorRecursively(eachInnerRuleElement);
+ boolean set = setRuleElementAnchorRecursively(eachInnerRuleElement);
+ if(set) {
+ return set;
+ }
}
}
return false;
Modified:
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/AnnotationVariableExpression.java
URL:
http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/AnnotationVariableExpression.java?rev=1748756&r1=1748755&r2=1748756&view=diff
==============================================================================
---
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/AnnotationVariableExpression.java
(original)
+++
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/AnnotationVariableExpression.java
Thu Jun 16 16:19:34 2016
@@ -50,4 +50,9 @@ private String var;
return var;
}
+ @Override
+ public String toString() {
+ return var;
+ }
+
}
Modified:
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RutaAnnotationMatcher.java
URL:
http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RutaAnnotationMatcher.java?rev=1748756&r1=1748755&r2=1748756&view=diff
==============================================================================
---
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RutaAnnotationMatcher.java
(original)
+++
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RutaAnnotationMatcher.java
Thu Jun 16 16:19:34 2016
@@ -234,5 +234,16 @@ public class RutaAnnotationMatcher imple
public long estimateAnchors(RutaBlock parent, RutaStream stream) {
return 1;
}
+
+ @Override
+ public String toString() {
+ IRutaExpression expression = getExpression();
+ if (expression != null) {
+ return expression.toString();
+ } else {
+ return "";
+ }
+ }
+
}
Modified:
uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/block/ForEachBlockTest.java
URL:
http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/block/ForEachBlockTest.java?rev=1748756&r1=1748755&r2=1748756&view=diff
==============================================================================
---
uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/block/ForEachBlockTest.java
(original)
+++
uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/block/ForEachBlockTest.java
Thu Jun 16 16:19:34 2016
@@ -21,12 +21,16 @@ package org.apache.uima.ruta.block;
import java.io.IOException;
import java.net.URISyntaxException;
+import java.util.HashMap;
+import java.util.Map;
+import org.apache.commons.collections.MapUtils;
import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
import org.apache.uima.cas.CAS;
import org.apache.uima.resource.ResourceConfigurationException;
import org.apache.uima.resource.ResourceInitializationException;
import org.apache.uima.ruta.engine.Ruta;
+import org.apache.uima.ruta.engine.RutaEngine;
import org.apache.uima.ruta.engine.RutaTestUtils;
import org.apache.uima.ruta.seed.TextSeeder;
import org.apache.uima.util.InvalidXMLException;
@@ -122,5 +126,32 @@ public class ForEachBlockTest {
script += "CW{-> T9} # @NUM{-> T10};\n";
return script;
}
+
+ @Test
+ public void testRigthToLeft() throws ResourceInitializationException,
InvalidXMLException, IOException, AnalysisEngineProcessException,
ResourceConfigurationException, URISyntaxException {
+ String script = "NUM{-> T1};";
+ script += "FOREACH(t) T1{}{\n";
+ script += "n:T1 SPECIAL.ct==\"^\" t{-> t.begin = n.begin};\n";
+ script += "}";
+ CAS cas = RutaTestUtils.getCAS("2^3");
+ Ruta.apply(cas, script);
+
+ RutaTestUtils.assertAnnotationsEquals(cas, 1, 2, "2^3", "2");
+ }
+
+ @Test
+ public void testEnforcedLeftToRigth() throws
ResourceInitializationException, InvalidXMLException, IOException,
AnalysisEngineProcessException, ResourceConfigurationException,
URISyntaxException {
+ String script = "NUM{-> T1};";
+ script += "FOREACH(t) T1{}{\n";
+ script += "n:@T1{->UNMARK(T1)} SPECIAL.ct==\"^\" t{-> t.begin =
n.begin};\n";
+ script += "}";
+ CAS cas = RutaTestUtils.getCAS("2^3");
+ Map<String, Object> parameters = new HashMap<>();
+ parameters.put(RutaEngine.PARAM_DEBUG, true);
+ parameters.put(RutaEngine.PARAM_DEBUG_WITH_MATCHES, true);
+ Ruta.apply(cas, script, parameters);
+
+ RutaTestUtils.assertAnnotationsEquals(cas, 1, 1, "2^3");
+ }
}