You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by gn...@apache.org on 2016/03/21 17:59:51 UTC
svn commit: r1736056 - in /felix/trunk/gogo/runtime/src:
main/java/org/apache/felix/gogo/runtime/
test/java/org/apache/felix/gogo/runtime/
Author: gnodet
Date: Mon Mar 21 16:59:51 2016
New Revision: 1736056
URL: http://svn.apache.org/viewvc?rev=1736056&view=rev
Log:
Support for here-string
Modified:
felix/trunk/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/Parser.java
felix/trunk/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/Pipe.java
felix/trunk/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/Tokenizer.java
felix/trunk/gogo/runtime/src/test/java/org/apache/felix/gogo/runtime/TestParser4.java
Modified: felix/trunk/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/Parser.java
URL: http://svn.apache.org/viewvc/felix/trunk/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/Parser.java?rev=1736056&r1=1736055&r2=1736056&view=diff
==============================================================================
--- felix/trunk/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/Parser.java (original)
+++ felix/trunk/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/Parser.java Mon Mar 21 16:59:51 2016
@@ -307,7 +307,7 @@ public class Parser
}
private static final Pattern redirNoArg = Pattern.compile("[0-9]?>&[0-9-]|[0-9-]?<&[0-9-]");
- private static final Pattern redirArg = Pattern.compile("[0-9&]?>|[0-9]?>>|[0-9]?<|[0-9]?<>");
+ private static final Pattern redirArg = Pattern.compile("[0-9&]?>|[0-9]?>>|[0-9]?<|[0-9]?<>|<<<");
public Statement statement()
{
Modified: felix/trunk/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/Pipe.java
URL: http://svn.apache.org/viewvc/felix/trunk/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/Pipe.java?rev=1736056&r1=1736055&r2=1736056&view=diff
==============================================================================
--- felix/trunk/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/Pipe.java (original)
+++ felix/trunk/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/Pipe.java Mon Mar 21 16:59:51 2016
@@ -18,6 +18,7 @@
*/
package org.apache.felix.gogo.runtime;
+import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
@@ -325,6 +326,14 @@ public class Pipe implements Callable<Re
setStream(ch, fd, READ + (output ? WRITE : 0));
}
}
+ else if (Token.eq("<<<", t))
+ {
+ Token word = tokens.get(++i);
+ Object val = Expander.expand("\"" + word + "\"", closure);
+ String str = val != null ? String.valueOf(val) : "";
+ Channel ch = Channels.newChannel(new ByteArrayInputStream(str.getBytes()));
+ setStream(ch, 0, READ);
+ }
}
for (int i = 0; i < streams.length; i++) {
Modified: felix/trunk/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/Tokenizer.java
URL: http://svn.apache.org/viewvc/felix/trunk/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/Tokenizer.java?rev=1736056&r1=1736055&r2=1736056&view=diff
==============================================================================
--- felix/trunk/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/Tokenizer.java (original)
+++ felix/trunk/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/Tokenizer.java Mon Mar 21 16:59:51 2016
@@ -23,7 +23,7 @@ import java.util.regex.Pattern;
public class Tokenizer extends BaseTokenizer
{
- private final Pattern redir = Pattern.compile("[0-9&]?>|[0-9]?>>|[0-9]?>&|[0-9]?<|[0-9]?<>");
+ private final Pattern redir = Pattern.compile("[0-9&]?>|[0-9]?>>|[0-9]?>&|[0-9]?<|[0-9]?<>|<<<");
protected boolean inArray;
protected int word = 0;
Modified: felix/trunk/gogo/runtime/src/test/java/org/apache/felix/gogo/runtime/TestParser4.java
URL: http://svn.apache.org/viewvc/felix/trunk/gogo/runtime/src/test/java/org/apache/felix/gogo/runtime/TestParser4.java?rev=1736056&r1=1736055&r2=1736056&view=diff
==============================================================================
--- felix/trunk/gogo/runtime/src/test/java/org/apache/felix/gogo/runtime/TestParser4.java (original)
+++ felix/trunk/gogo/runtime/src/test/java/org/apache/felix/gogo/runtime/TestParser4.java Mon Mar 21 16:59:51 2016
@@ -135,6 +135,21 @@ public class TestParser4 extends Abstrac
assertEquals("bar\nbar\n", c.execute("cat <$c | tac"));
}
+ @Test
+ public void testHereString() throws Exception
+ {
+ Context c = new Context();
+ c.addCommand("echo", this);
+ c.addCommand("tac", this);
+ c.addCommand("cat", this);
+
+ c.execute("a=foo");
+ assertEquals("foo\n", c.execute("cat <<< $a | tac"));
+
+ c.execute("c = [ ar1 ar2 ]");
+ assertEquals("ar1 ar2\n", c.execute("cat <<<$c | tac"));
+ }
+
public void echo(String msg)
{
System.out.println(msg);