820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
|
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
|
+
-
|
interp.current_script_obj = prev_script_obj;
script_obj_ptr.decrRefCount();
return interp.OK;
});
/* ==================== command split ===================================== */
interp.registerCommand("::split", function (interp, args) {
//print("split!"+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;
}
|
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
|
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
|
+
+
-
+
+
-
+
-
+
|
}
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 c = new Array();
var sc_idx = 0;
var sc = split_chars;
var sc = split_chars;
var sc_len = split_len;
var sl = interp.default_obj.utf8_tounicode(str.substring(idx), c);
var sc_idx2 = 0;
while (sc_len--) {
var pc = new Array();
sc += interp.default_obj.utf8_tounicode(sc, pc);
sc_idx += interp.default_obj.utf8_tounicode(sc.charAt(sc_idx), 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;
no_match_start = idx + 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);
|
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
|
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
|
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
|
return interp.ERROR;
}
/* Eval the code in the target call_frame. */
interp.frame_ptr = target_call_frame;
if (argc == 2) {
retcode = interp.eval_statement.evalObj(args[i]);
} else {
/* cannot use evalObjVector() as that makes problems with ensemble commands!! */
var my_str = "";
var sep = "";
for (; i < args.length; i++) {
if (my_str.match(" ") != null) {
my_str += sep+"{"+args[i]+"}";
} else {
my_str += sep+args[i];
}
sep = " ";
}
var my_ptr = interp.string_obj_type.newStringObj(my_str, -1);
my_ptr.incrRefCount();
retcode = interp.eval_statement.evalObjVector(argc - i + 1, args.slice(i));
retcode = interp.eval_statement.evalObj(my_ptr);
my_ptr.decrRefCount();
}
interp.frame_ptr = saved_call_frame;
return retcode;
} else {
interp.wrongNumArgs(1, args, "?level? command ?arg ...?");
return interp.ERROR;
}
|