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