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");
+  }
 
 }


Reply via email to