Author: pkluegl
Date: Wed May 21 12:30:41 2014
New Revision: 1596558

URL: http://svn.apache.org/r1596558
Log:
UIMA-3820
- fixed right-to-left matching
- added more tests

Modified:
    
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/ComposedRuleElementMatch.java
    
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/WildCardRuleElement.java
    
uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/MarkInGreedyComposedTest.java

Modified: 
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/ComposedRuleElementMatch.java
URL: 
http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/ComposedRuleElementMatch.java?rev=1596558&r1=1596557&r2=1596558&view=diff
==============================================================================
--- 
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/ComposedRuleElementMatch.java
 (original)
+++ 
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/ComposedRuleElementMatch.java
 Wed May 21 12:30:41 2014
@@ -209,12 +209,16 @@ public class ComposedRuleElementMatch ex
             each.setContainerMatch(copy);
             // really need to copy all?
             boolean isCurrentOne = false;
-            if (after && counter == value.size() - 1) {
-              isCurrentOne = true;
-            }
-            if (!after && counter == 0) {
+            if (counter == value.size() - 1) {
               isCurrentOne = true;
             }
+            // should not be neccessary because empty matches are listed last
+            // if (after && counter == value.size() - 1) {
+            // isCurrentOne = true;
+            // }
+            // if (!after && counter == 0) {
+            // isCurrentOne = true;
+            // }
             if (each instanceof ComposedRuleElementMatch && isCurrentOne) {
               newValue.add(((ComposedRuleElementMatch) 
each).copy2(extendedContainerMatch, after));
             } else {

Modified: 
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/WildCardRuleElement.java
URL: 
http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/WildCardRuleElement.java?rev=1596558&r1=1596557&r2=1596558&view=diff
==============================================================================
--- 
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/WildCardRuleElement.java
 (original)
+++ 
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/WildCardRuleElement.java
 Wed May 21 12:30:41 2014
@@ -124,14 +124,11 @@ public class WildCardRuleElement extends
     AnnotationFS nextOne = annotation;
     boolean doneHere = false;
     while (!doneHere && (nextOne = getNextPositionForComposed(cre, after, 
nextOne, stream)) != null) {
-//      RutaBasic endAnchor = stream.getEndAnchor(nextOne.getBegin());
-//      RutaBasic anchor = stream.getAnchor(!after, nextOne);
       int pointer = after ? nextOne.getBegin() : nextOne.getEnd();
       RutaBasic anchor = stream.getAnchor(!after, pointer);
       ComposedRuleElementMatch extendedContainerMatch = containerMatch.copy();
       RuleMatch extendedMatch = ruleMatch.copy(extendedContainerMatch, after);
       AnnotationFS coveredByWildCard = getCoveredByWildCard(after, annotation, 
nextOne, stream);
-
       doMatch(coveredByWildCard, extendedMatch, extendedContainerMatch, 
annotation == null, stream,
               crowd);
       if (extendedMatch.matched()) {

Modified: 
uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/MarkInGreedyComposedTest.java
URL: 
http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/MarkInGreedyComposedTest.java?rev=1596558&r1=1596557&r2=1596558&view=diff
==============================================================================
--- 
uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/MarkInGreedyComposedTest.java
 (original)
+++ 
uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/MarkInGreedyComposedTest.java
 Wed May 21 12:30:41 2014
@@ -33,37 +33,65 @@ import org.junit.Test;
 public class MarkInGreedyComposedTest {
 
   
-//  @Test
-//  public void testWildCardFollowedByComposedReversed() {
-//    String document = "1 x f B e d B x c A b a A 1";
-//    String script = "";
-//    script += "( ( (SW{REGEXP(\"x\")} SW ) #) {-> T1} )+ @NUM;";
-//    CAS cas = null;
-//    try {
-//      cas = RutaTestUtils.getCAS(document);
-//      Ruta.apply(cas, script);
-//    } catch (Exception e) {
-//      e.printStackTrace();
-//    }
-//
-//    Type t = null;
-//    AnnotationIndex<AnnotationFS> ai = null;
-//    FSIterator<AnnotationFS> iterator = null;
-//
-//    t = RutaTestUtils.getTestType(cas, 1);
-//    ai = cas.getAnnotationIndex(t);
-//    iterator = ai.iterator();
-////    for (AnnotationFS a : ai) {
-////      System.out.println(a.getCoveredText());
-////    }
-//    assertEquals(2, ai.size());
-//    assertEquals("x f B e d B", iterator.next().getCoveredText());
-//    assertEquals("x c A b a A", iterator.next().getCoveredText());
-//    
-//    if (cas != null) {
-//      cas.release();
-//    }
-//  }
+  
+  @Test
+  public void testWildCardFollowedByComposedReversed() {
+    String document = "1 x f B e d B x c A b a A 1";
+    String script = "";
+    script += "( ( (SW{REGEXP(\"x\")} SW ) #) {-> T1} )+ @NUM;";
+    CAS cas = null;
+    try {
+      cas = RutaTestUtils.getCAS(document);
+      Ruta.apply(cas, script);
+    } catch (Exception e) {
+      e.printStackTrace();
+    }
+
+    Type t = null;
+    AnnotationIndex<AnnotationFS> ai = null;
+    FSIterator<AnnotationFS> iterator = null;
+
+    t = RutaTestUtils.getTestType(cas, 1);
+    ai = cas.getAnnotationIndex(t);
+    iterator = ai.iterator();
+    assertEquals(2, ai.size());
+    assertEquals("x f B e d B", iterator.next().getCoveredText());
+    assertEquals("x c A b a A", iterator.next().getCoveredText());
+    
+    if (cas != null) {
+      cas.release();
+    }
+  }
+  
+  @Test
+  public void testSimpleFollowedByComposedReversed() {
+    String document = "1 x f B x c A 1";
+    String script = "";
+    script += "( ( (SW{REGEXP(\"x\")} SW ) CW) {-> T1} )+ @NUM;";
+    CAS cas = null;
+    try {
+      cas = RutaTestUtils.getCAS(document);
+      Ruta.apply(cas, script);
+    } catch (Exception e) {
+      e.printStackTrace();
+    }
+
+    Type t = null;
+    AnnotationIndex<AnnotationFS> ai = null;
+    FSIterator<AnnotationFS> iterator = null;
+
+    t = RutaTestUtils.getTestType(cas, 1);
+    ai = cas.getAnnotationIndex(t);
+    iterator = ai.iterator();
+    assertEquals(2, ai.size());
+    assertEquals("x f B", iterator.next().getCoveredText());
+    assertEquals("x c A", iterator.next().getCoveredText());
+    
+    if (cas != null) {
+      cas.release();
+    }
+  }
+  
   
   @Test
   public void testWildCardFollowedByComposed() {


Reply via email to