Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | new code for split command and some fixes |
|---|---|
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA1: |
6dcc27fe3953cb9604eeaf1bfb899a8f |
| User & Date: | arnulf 2012-02-12 16:17:53.141 |
Context
|
2012-02-12
| ||
| 16:18 | typo fix check-in: 31e9022239 user: arnulf tags: trunk | |
| 16:17 | new code for split command and some fixes check-in: 6dcc27fe39 user: arnulf tags: trunk | |
| 16:16 | new code for utf8_tounicode check-in: 68a0640555 user: arnulf tags: trunk | |
Changes
Changes to rapl_pkg_corecmd.js.
| ︙ | ︙ | |||
74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
interp.code = this.BREAK;
return;
});
/* ==================== command catch ===================================== */
interp.registerCommand("::catch", function (interp, args) {
args.shift();
this.requireMinArgc(args, 1, "catch", "");
var body = args.shift();
var var_obj = null;
if (args.length > 0) {
var result_var_name = args.shift();
var_obj = interp.global_ns_ptr.lookupVariableEx(interp, result_var_name, 0, "", 1, 1);
| > > | 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
interp.code = this.BREAK;
return;
});
/* ==================== command catch ===================================== */
interp.registerCommand("::catch", function (interp, args) {
interp.setResultString("catch not yet reimplemented");
return interp.ERROR;
args.shift();
this.requireMinArgc(args, 1, "catch", "");
var body = args.shift();
var var_obj = null;
if (args.length > 0) {
var result_var_name = args.shift();
var_obj = interp.global_ns_ptr.lookupVariableEx(interp, result_var_name, 0, "", 1, 1);
|
| ︙ | ︙ | |||
136 137 138 139 140 141 142 143 144 145 146 147 148 149 |
q[fn].apply(q,args);
return "dom " + selector;
});
}
/* ==================== command eval ===================================== */
interp.registerCommand("::eval",function (interp, args) {
this.requireMinArgc(args, 2, "eval", "");
for (var i = 1; i < args.length; i++) {
args[i] = args[i].toString();
}
if (args.length == 2) {
var code = args[1];
} else {
| > > | 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 |
q[fn].apply(q,args);
return "dom " + selector;
});
}
/* ==================== command eval ===================================== */
interp.registerCommand("::eval",function (interp, args) {
interp.setResultString("eval not yet reimplemented");
return interp.ERROR;
this.requireMinArgc(args, 2, "eval", "");
for (var i = 1; i < args.length; i++) {
args[i] = args[i].toString();
}
if (args.length == 2) {
var code = args[1];
} else {
|
| ︙ | ︙ | |||
196 197 198 199 200 201 202 203 204 205 206 207 208 209 |
}
interp.setResultString(path);
return interp.OK;
});
/* ==================== command for ===================================== */
interp.registerCommand("::for", function (interp, args) {
this.requireExactArgc(args, 5, "for", "");
interp.eval_statement.eval(args[1].toString());
if(interp.code != this.OK) return;
var cond = "::set _ "+args[2].toString();
var step = args[3].toString();
var body = args[4].toString();
interp.inLoop = true;
| > > | 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 |
}
interp.setResultString(path);
return interp.OK;
});
/* ==================== command for ===================================== */
interp.registerCommand("::for", function (interp, args) {
interp.setResultString("for not yet reimplemented");
return interp.ERROR;
this.requireExactArgc(args, 5, "for", "");
interp.eval_statement.eval(args[1].toString());
if(interp.code != this.OK) return;
var cond = "::set _ "+args[2].toString();
var step = args[3].toString();
var body = args[4].toString();
interp.inLoop = true;
|
| ︙ | ︙ | |||
226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 |
/* ==================== command foreach ===================================== */
interp.registerCommand("::foreach", function (interp, args) {
return interp.foreachMapHelper(interp, args, 0);
});
/* ==================== command format ===================================== */
interp.registerCommand("::format", function (interp, args) {
this.requireMinArgc(args, 2, "format", "");
throw "format not yet implemented";
});
/* ==================== command gets ===================================== */
interp.registerCommand("::gets", function (interp, args) {
this.requireArgcRange(args, 2, 3, "gets", "");
var reply = prompt(args[1],"");
if(args[2] != null) {
interp.setVar(args[2],interp.statement_parser.objectify(reply));
return reply.length;
} else return reply;
});
| > > > > | 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 |
/* ==================== command foreach ===================================== */
interp.registerCommand("::foreach", function (interp, args) {
return interp.foreachMapHelper(interp, args, 0);
});
/* ==================== command format ===================================== */
interp.registerCommand("::format", function (interp, args) {
interp.setResultString("format not yet implemented");
return interp.ERROR;
this.requireMinArgc(args, 2, "format", "");
throw "format not yet implemented";
});
/* ==================== command gets ===================================== */
interp.registerCommand("::gets", function (interp, args) {
interp.setResultString("gets not yet reimplemented");
return interp.ERROR;
this.requireArgcRange(args, 2, 3, "gets", "");
var reply = prompt(args[1],"");
if(args[2] != null) {
interp.setVar(args[2],interp.statement_parser.objectify(reply));
return reply.length;
} else return reply;
});
|
| ︙ | ︙ | |||
258 259 260 261 262 263 264 |
while (1) {
/* Far not enough arguments given! */
if (current >= argc) {
err = true;
break;
}
if ((retval = interp.eval_expression.getBoolFromExpr(args[current++], bool)) != interp.OK) {
| < | 268 269 270 271 272 273 274 275 276 277 278 279 280 281 |
while (1) {
/* Far not enough arguments given! */
if (current >= argc) {
err = true;
break;
}
if ((retval = interp.eval_expression.getBoolFromExpr(args[current++], bool)) != interp.OK) {
return retval;
}
bool = bool[0];
/* There lacks something, isn't it? */
if (current >= argc) {
err = true;
break;
|
| ︙ | ︙ | |||
450 451 452 453 454 455 456 457 458 459 460 461 462 463 |
//print("IA!"+src_path+"!"+src_cmd+"!"+target_path+"!"+target_cmd+"!"+args.slice(5)+"!");
interp.aliases.push(new R.InterpAlias(interp, src_path, src_cmd, target_path, target_cmd, args.length > 5 ? args.slice(5) : new Array()));
return interp.OK;
});
/* ==================== command interp aliases ===================================== */
interp.registerSubCommand("::interp", "aliases", function (interp, args) {
args.shift();
this.requireArgcRange(args, 0, 1, "interp aliases", "");
var src_path = null;
if (args.length > 0) {
src_path = args.shift().toString();
if (src_path != "") {
throw "interp alias interp other current interp not yet implemented, src_path must be empty!";
| > > | 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 |
//print("IA!"+src_path+"!"+src_cmd+"!"+target_path+"!"+target_cmd+"!"+args.slice(5)+"!");
interp.aliases.push(new R.InterpAlias(interp, src_path, src_cmd, target_path, target_cmd, args.length > 5 ? args.slice(5) : new Array()));
return interp.OK;
});
/* ==================== command interp aliases ===================================== */
interp.registerSubCommand("::interp", "aliases", function (interp, args) {
interp.setResultString("interp aliases not yet reimplemented");
return interp.ERROR;
args.shift();
this.requireArgcRange(args, 0, 1, "interp aliases", "");
var src_path = null;
if (args.length > 0) {
src_path = args.shift().toString();
if (src_path != "") {
throw "interp alias interp other current interp not yet implemented, src_path must be empty!";
|
| ︙ | ︙ | |||
652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 |
interp.setResultBool(interp.true_obj);
return interp.OK;
});
/* ==================== command regsub ===================================== */
interp.registerCommand("::regsub", function (interp, args) {
this.requireMinArgc(args, 2, "regsub", "");
throw "regsub not yet implemented";
});
/* ==================== command rename ===================================== */
interp.registerCommand("::rename", function (interp, args) {
this.requireExactArgc(args, 3, "rename", "");
interp.renameCommand(args[1], args[2]);
});
/* ==================== command return ===================================== */
interp.registerCommand("::return", function (interp, args) {
var core_cmd = interp.core_pkg;
| > > > > | 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 |
interp.setResultBool(interp.true_obj);
return interp.OK;
});
/* ==================== command regsub ===================================== */
interp.registerCommand("::regsub", function (interp, args) {
interp.setResultString("regsub not yet reimplemented");
return interp.ERROR;
this.requireMinArgc(args, 2, "regsub", "");
throw "regsub not yet implemented";
});
/* ==================== command rename ===================================== */
interp.registerCommand("::rename", function (interp, args) {
interp.setResultString("rename not yet reimplemented");
return interp.ERROR;
this.requireExactArgc(args, 3, "rename", "");
interp.renameCommand(args[1], args[2]);
});
/* ==================== command return ===================================== */
interp.registerCommand("::return", function (interp, args) {
var core_cmd = interp.core_pkg;
|
| ︙ | ︙ | |||
747 748 749 750 751 752 753 754 755 756 757 758 759 760 |
interp.setResult(args[processed_args]);
}
return interp.RETURN;
});
/* ==================== command scan ===================================== */
interp.registerCommand("::scan", function (interp, args) {
this.requireMinArgc(args, 2, "scan", "");
throw "scan not yet implemented";
});
/* ==================== command set ===================================== */
interp.registerCommand("::set", function (interp, args) {
if ((args.length != 2) && (args.length != 3)) {
| > > | 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 |
interp.setResult(args[processed_args]);
}
return interp.RETURN;
});
/* ==================== command scan ===================================== */
interp.registerCommand("::scan", function (interp, args) {
interp.setResultString("scan not yet reimplemented");
return interp.ERROR;
this.requireMinArgc(args, 2, "scan", "");
throw "scan not yet implemented";
});
/* ==================== command set ===================================== */
interp.registerCommand("::set", function (interp, args) {
if ((args.length != 2) && (args.length != 3)) {
|
| ︙ | ︙ | |||
777 778 779 780 781 782 783 784 785 786 787 |
}
interp.setResult(args[2]);
return interp.OK;
});
/* ==================== command source ===================================== */
interp.registerCommand("::source", function (interp, args) {
if (args.length != 2) {
interp.wrongNumArgs(1, args, 1, "filename");
return interp.ERROR;
}
| > > > | | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 |
}
interp.setResult(args[2]);
return interp.OK;
});
/* ==================== command source ===================================== */
interp.registerCommand("::source", function (interp, args) {
var script_obj_ptr;
var prev_script_obj;
if (args.length != 2) {
interp.wrongNumArgs(1, args, 1, "filename");
return interp.ERROR;
}
script_obj_ptr = args[1];
script_obj_ptr.incrRefCount();
prev_script_obj = interp.current_script_obj;
interp.current_script_obj = script_obj_ptr;
interp.setResultString(interp.source(interp, script_obj_ptr));
interp.current_script_obj = prev_script_obj;
script_obj_ptr.decrRefCount();
return interp.OK;
});
/* ==================== command split ===================================== */
interp.registerCommand("::split", function (interp, args) {
var script_obj_ptr;
var str;
var split_chars;
var no_match_start;
var split_len;
var str_len;
var res_obj_ptr;
var c = new Array();
var len;
var idx = 0;
if (args.length != 2 && args.length != 3) {
interp.wrongNumArgs(1, args, "string ?splitChars?");
return interp.ERROR;
}
str = args[1].getString();
len = args[1].getStringLength();
if (len == 0) {
return interp.OK;
}
str_len = interp.default_obj.utf8_length(args[1]);
/* Init */
if (args.length == 2) {
split_chars = " \n\t\r";
split_len = 4;
} else {
split_chars = args[2].getString();
split_len = interp.default_obj.utf8_length(args[2]);
}
no_match_start = idx;
res_obj_ptr = interp.list_obj_type.newListObj(null, 0);
/* Split */
if (split_len) {
var obj_ptr;
while (str_len--) {
var sc = split_chars;
var sc_len = split_len;
var sl = interp.default_obj.utf8_tounicode(str.substring(idx), c);
while (sc_len--) {
var pc = new Array();
sc += interp.default_obj.utf8_tounicode(sc, pc);
if (c[0] == pc[0]) {
obj_ptr = interp.string_obj_type.newStringObj(str.substring(no_match_start), (idx - no_match_start));
interp.list_obj_type.listAppendElement(res_obj_ptr, obj_ptr);
no_match_start += sl;
break;
}
}
idx += sl;
}
obj_ptr = interp.string_obj_type.newStringObj(str.substring(no_match_start), (idx - no_match_start));
interp.list_obj_type.listAppendElement(res_obj_ptr, obj_ptr);
} else {
/* This handles the special case of splitchars eq {}
* Optimise by sharing common (ASCII) characters
*/
while (str_len--) {
var n = interp.default_obj.utf8_tounicode(str, c);
interp.list_obj_type.listAppendElement(res_obj_ptr, interp.string_obj_type.newStringObjUtf8(str.substring(idx), 1));
idx += n;
}
}
interp.setResult(res_obj_ptr);
return interp.OK;
});
/* ==================== command subst ===================================== */
interp.registerCommand("::subst", function (interp, args) {
var flags = interp.FUNCTION_FLAGS_SUBST_FLAG;
var obj_ptr = new Array();
if (args.length < 2) {
|
| ︙ | ︙ | |||
1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 |
}
return interp.OK;
});
/* ==================== command native ===================================== */
// native cmdname {function(interp, args) {...}}
interp.registerCommand("::native", function (interp, args) {
this.requireExactArgc(args, 3, "native", "");
var cmd = args[1].toList();
var func = eval(args[2].toString());
//print("in: "+args[2].toString()+", func: "+ func);
if (cmd.length == 1) {
interp.registerCommand(cmd[0].toString(), func);
return;
}
base = cmd[0].toString();
cmd.shift();
interp.registerSubCommand(base, cmd.join(" "), eval(args[2].toString()));
return;
});
/* ==================== command showLevelInfo ===================================== */
interp.registerCommand("::showLevelInfo", function (interp, args) {
args.shift();
this.requireMinArgc(args, 1, "showLevelInfo", "");
var txt = "";
if (args.length > 0) {
txt = args.shift();
}
| > > > > | 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 |
}
return interp.OK;
});
/* ==================== command native ===================================== */
// native cmdname {function(interp, args) {...}}
interp.registerCommand("::native", function (interp, args) {
interp.setResultString("native not yet reimplemented");
return interp.ERROR;
this.requireExactArgc(args, 3, "native", "");
var cmd = args[1].toList();
var func = eval(args[2].toString());
//print("in: "+args[2].toString()+", func: "+ func);
if (cmd.length == 1) {
interp.registerCommand(cmd[0].toString(), func);
return;
}
base = cmd[0].toString();
cmd.shift();
interp.registerSubCommand(base, cmd.join(" "), eval(args[2].toString()));
return;
});
/* ==================== command showLevelInfo ===================================== */
interp.registerCommand("::showLevelInfo", function (interp, args) {
interp.setResultString("showLevelInfo not yet reimplemented");
return interp.ERROR;
args.shift();
this.requireMinArgc(args, 1, "showLevelInfo", "");
var txt = "";
if (args.length > 0) {
txt = args.shift();
}
|
| ︙ | ︙ |