[seam-commits] Seam SVN: r13390 - sandbox/encore/shell/src/main/java/org/jboss/encore/shell/cli.

seam-commits at lists.jboss.org seam-commits at lists.jboss.org
Wed Jul 14 12:03:25 EDT 2010


Author: lincolnthree
Date: 2010-07-14 12:03:24 -0400 (Wed, 14 Jul 2010)
New Revision: 13390

Modified:
   sandbox/encore/shell/src/main/java/org/jboss/encore/shell/cli/ExecutionParser.java
Log:
Quoted strings now respected on command line

Modified: sandbox/encore/shell/src/main/java/org/jboss/encore/shell/cli/ExecutionParser.java
===================================================================
--- sandbox/encore/shell/src/main/java/org/jboss/encore/shell/cli/ExecutionParser.java	2010-07-14 10:47:59 UTC (rev 13389)
+++ sandbox/encore/shell/src/main/java/org/jboss/encore/shell/cli/ExecutionParser.java	2010-07-14 16:03:24 UTC (rev 13390)
@@ -25,6 +25,8 @@
 import java.util.LinkedList;
 import java.util.Map;
 import java.util.Queue;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 import javax.enterprise.inject.Instance;
 import javax.inject.Inject;
@@ -107,10 +109,20 @@
    {
       Queue<String> tokens = new LinkedList<String>();
 
-      for (String token : line.split("\\s+"))
+      // -------------------------------(0-(1------)---(2---))----------
+      Matcher matcher = Pattern.compile("\"([^\"]*?)\"|(\\S+)").matcher(line);
+      while (matcher.find())
       {
-         tokens.add(token);
+         if (matcher.group(1) != null)
+         {
+            tokens.add(matcher.group(1));
+         }
+         else
+         {
+            tokens.add(matcher.group());
+         }
       }
+
       return tokens;
    }
 
@@ -118,7 +130,9 @@
    {
       Map<OptionMetadata, Object> valueMap = new HashMap<OptionMetadata, Object>();
 
-      CommandParser commandParser = new CompositeCommandParser(new NamedBooleanOptionParser(), new NamedValueOptionParser(), new NamedValueVarargsOptionParser(), new OrderedValueOptionParser(), new OrderedValueVarargsOptionParser(), new ParseErrorParser());
+      CommandParser commandParser = new CompositeCommandParser(new NamedBooleanOptionParser(),
+               new NamedValueOptionParser(), new NamedValueVarargsOptionParser(), new OrderedValueOptionParser(),
+               new OrderedValueVarargsOptionParser(), new ParseErrorParser());
 
       commandParser.parse(command, valueMap, tokens);
 



More information about the seam-commits mailing list