add set command and switch completely to . as an object seperator
[org.ibex.xt-crawshaw.git] / src / java / org / ibex / xt / shell / Shell.java
index 746479e..17a2f57 100644 (file)
@@ -36,6 +36,7 @@ public class Shell extends Env {
             new Command.Pwd(),
             new Command.Cd(),
             new Command.Rm(),
+            new Command.Set(),
             new Command.Help()
         };
     }
@@ -50,16 +51,35 @@ public class Shell extends Env {
 
         String line;
         String buffer = "";
+        int countBraceOpen = 0, countBraceClose = 0;
+        int countBracketOpen = 0, countBracketClose = 0;
+        int countSQBracketOpen = 0, countSQBracketClose = 0;
         while ((line = in.readLine()) != null) {
             if (line.length() > 0) {
                 if (line.startsWith("exit")) return;
-                if (line.charAt(line.length() - 1) == '\\') {
-                    buffer += line.substring(0, line.length() - 1);
-                    out.print('>');
-                    out.flush(); continue;
+
+                for (int i=0; i < line.length(); i++) {
+                    switch (line.charAt(i)) {
+                        case '{': countBraceOpen++; break;
+                        case '}': countBraceClose++; break;
+                        case '(': countBracketOpen++; break;
+                        case ')': countBracketClose++; break;
+                        case '[': countSQBracketOpen++; break;
+                        case ']': countSQBracketClose++; break;
+                    }
                 }
 
+                boolean nonendchar = line.charAt(line.length() - 1) == '\\';
+                if (nonendchar) line = line.substring(0, line.length() - 1);
                 buffer += line;
+
+                if (nonendchar ||
+                        countBracketOpen != countBracketClose ||
+                        countBraceOpen != countBraceClose ||
+                        countSQBracketOpen != countSQBracketClose) {
+                    out.print('>');
+                    out.flush(); continue;
+                }
             }
 
             if (buffer.length() > 0) {