浏览代码

memory tools: support quotes in args to locate types like "{ x : Int }" (#526)

trethaller 3 年之前
父节点
当前提交
eb5b419b40
共有 1 个文件被更改,包括 25 次插入1 次删除
  1. 25 1
      other/memory/Memory.hx

+ 25 - 1
other/memory/Memory.hx

@@ -732,6 +732,30 @@ class Memory {
 		Sys.println(msg);
 	}
 
+	static function parseArgs(str: String) {
+		str = StringTools.trim(str);
+		var i = 0;
+		var tok = "";
+		var args = [];
+		var escape = false;
+		while(i != str.length) {
+			var c = str.charAt(i++);
+			if(c == '"') {
+				escape = !escape;
+			}
+			else {
+				if(c == " " && !escape) {
+					if(tok.length > 0) args.push(tok);
+					tok = "";
+				}
+				else 
+					tok += c;
+			}
+		}
+		if(tok.length > 0) args.push(tok);
+		return args;
+	}
+
 	static function main() {
 		var m = new Memory();
 
@@ -759,7 +783,7 @@ class Memory {
 		var stdin = Sys.stdin();
 		while( true ) {
 			Sys.print("> ");
-			var args = ~/ +/g.split(StringTools.trim(stdin.readLine()));
+			var args = parseArgs(stdin.readLine());
 			var cmd = args.shift();
 			switch( cmd ) {
 			case "exit", "quit", "q":