You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by pk...@apache.org on 2016/08/25 07:29:59 UTC

svn commit: r1757618 - in /uima/ruta/trunk/ruta-core/src: main/java/org/apache/uima/ruta/RutaEnvironment.java test/java/org/apache/uima/ruta/block/ForEachBlockTest.java test/java/org/apache/uima/ruta/block/RutaScriptBlockTest.java

Author: pkluegl
Date: Thu Aug 25 07:29:58 2016
New Revision: 1757618

URL: http://svn.apache.org/viewvc?rev=1757618&view=rev
Log:
UIMA-5074
- allow macro definitions in parent environments
- added tests

Modified:
    uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaEnvironment.java
    uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/block/ForEachBlockTest.java
    uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/block/RutaScriptBlockTest.java

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaEnvironment.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaEnvironment.java?rev=1757618&r1=1757617&r2=1757618&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaEnvironment.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaEnvironment.java Thu Aug 25 07:29:58 2016
@@ -1014,19 +1014,43 @@ public class RutaEnvironment {
 	}
 
 	public boolean isMacroAction(String name) {
-		return macroActions.keySet().contains(name);
+		boolean isDefined = macroActions.keySet().contains(name);
+		if(isDefined) {
+		  return true;
+		} else if (owner != null && owner.getParent() != null) {
+		  return owner.getParent().getEnvironment().isMacroAction(name);
+		}
+    return false;
 	}
 
 	public boolean isMacroCondition(String name) {
-		return macroConditions.keySet().contains(name);
+	  boolean isDefined = macroConditions.keySet().contains(name);
+    if(isDefined) {
+      return true;
+    } else if (owner != null && owner.getParent() != null) {
+      return owner.getParent().getEnvironment().isMacroCondition(name);
+    }
+    return false;
 	}
 
 	public Triple<Map<String, String>, List<AbstractRutaAction>, Set<String>> getMacroAction(String name) {
-		return macroActions.get(name);
+	  Triple<Map<String, String>, List<AbstractRutaAction>, Set<String>> definition = macroActions.get(name);
+	  if(definition != null) {
+	    return definition;
+	  } else if (owner != null && owner.getParent() != null) {
+	    return owner.getParent().getEnvironment().getMacroAction(name);
+	  }
+		return null;
 	}
 
 	public Triple<Map<String, String>, List<AbstractRutaCondition>, Set<String>> getMacroCondition(String name) {
-		return macroConditions.get(name);
+    Triple<Map<String, String>, List<AbstractRutaCondition>, Set<String>> definition = macroConditions.get(name);
+    if(definition != null) {
+      return definition;
+    } else if (owner != null && owner.getParent() != null) {
+      return owner.getParent().getEnvironment().getMacroCondition(name);
+    }
+    return null;
 	}
 
 	public void addAliasVariable(String name, String var) {

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=1757618&r1=1757617&r2=1757618&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 Aug 25 07:29:58 2016
@@ -178,4 +178,36 @@ public class ForEachBlockTest {
     cas.release();
   }
 
+
+  @Test
+  public void testComposed() throws Exception {
+    String script = "NUM{-> T1};";
+    script += "FOREACH(t) T1{}{\n";
+    script += "(t (SW NUM)* (SPECIAL NUM)?{-PARTOF(T2)}){->T2};";
+    script += "}";
+
+    CAS cas = RutaTestUtils.getCAS("text 4x2^3 text");
+    Ruta.apply(cas, script);
+
+    RutaTestUtils.assertAnnotationsEquals(cas, 2, 1, "4x2^3");
+    cas.release();
+  }
+  
+  
+  @Test
+  public void testConditionMacro() throws Exception {
+    String script = "CONDITION isSmall() = REGEXP(\".\");\n";
+    script += "FOREACH(num) NUM{} {\n";
+    script += "num{isSmall()-> T1};";
+    script += "}";
+
+    CAS cas = RutaTestUtils.getCAS("1 22 333");
+    Ruta.apply(cas, script);
+
+    RutaTestUtils.assertAnnotationsEquals(cas, 1, 1, "1");
+    cas.release();
+  }
+  
+  
+  
 }

Modified: uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/block/RutaScriptBlockTest.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/block/RutaScriptBlockTest.java?rev=1757618&r1=1757617&r2=1757618&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/block/RutaScriptBlockTest.java (original)
+++ uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/block/RutaScriptBlockTest.java Thu Aug 25 07:29:58 2016
@@ -74,4 +74,18 @@ public class RutaScriptBlockTest {
     RutaTestUtils.assertAnnotationsEquals(cas, 2, 2, "text", "stuff");
   }
 
+  @Test
+  public void testConditionMacro() throws Exception {
+    String script = "CONDITION isSmall() = REGEXP(\".\");\n";
+    script += "BLOCK(num) NUM{} {\n";
+    script += "Document{isSmall()-> T1};";
+    script += "}";
+
+    CAS cas = RutaTestUtils.getCAS("1 22 333");
+    Ruta.apply(cas, script);
+
+    RutaTestUtils.assertAnnotationsEquals(cas, 1, 1, "1");
+    cas.release();
+  }
+  
 }