21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
|
PkgString.superclass.constructor.apply(strg, arguments);
R.Base.pkg_string_oid++;
strg.oid = R.Base.pkg_string_oid;
/* ==================== command string first ===================================== */
interp.registerSubCommand("::string", "first", function (interp, args) {
args.shift();
this.requireArgcRange(args, 2, 3, "string first", "");
var needle_str = args.shift().toString();
var haystack_str = args.shift().toString()
var start_idx = 0;
if (args.length > 0) {
start_idx = parseInt(args.shift().toString());
var idx = 0;
var needle_len;
var haystack_len;
var needle_str;
var haystack_str;
if (args.length != 3 && args.length != 4) {
interp.wrongNumArgs(1, args, "subString string ?index?");
return interp.ERROR;
}
needle_str = args[1].getString();
haystack_str = args[2].getString();
needle_len = args[1].length;
haystack_len = args[2].length;
if (args.length == 4) {
var res = new Array();
if (interp.index_obj_type.getIndex(args[3], res) != interp.OK) {
return interp.ERROR;
}
idx = interp.index_obj_type.relToAbsIndex(haystack_len, res[0]);
}
interp.setResultInt(interp.string_obj_type.stringFirst(needle_str, needle_len, haystack_str, haystack_len, idx));
return (haystack_str.indexOf(needle_str, start_idx));
return interp.OK;
});
/* ==================== command string equal ===================================== */
interp.registerSubCommand("::string", "equal", function (interp, args) {
this.requireExactArgc(args, 3, "string equal", "");
return (args[1].toString() == args[2].toString());
});
|
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
|
} catch (e) {
return "";
}
});
/* ==================== command string last ===================================== */
interp.registerSubCommand("::string", "last", function (interp, args) {
args.shift();
this.requireArgcRange(args, 2, 3, "string last", "");
var needle_str = args.shift().toString();
var haystack_str = args.shift().toString()
var start_idx = args.lgth-1;
if (args.length > 0) {
start_idx = parseInt(args.shift().toString());
var idx = 0;
var needle_len;
var haystack_len;
var needle_str;
var haystack_str;
if (args.length != 3 && args.length != 4) {
interp.wrongNumArgs(1, args, "subString string ?index?");
return interp.ERROR;
}
needle_str = args[1].getString();
haystack_str = args[2].getString();
needle_len = args[1].length;
haystack_len = args[2].length;
if (args.length == 4) {
var res = new Array();
if (interp.index_obj_type.getIndex(args[3], res) != interp.OK) {
return interp.ERROR;
}
idx = interp.index_obj_type.relToAbsIndex(haystack_len, res[0]);
} else {
idx = haystack_len;
}
interp.setResultInt(interp.string_obj_type.stringLast(needle_str, needle_len, haystack_str, haystack_len, idx));
return (haystack_str.lastIndexOf(needle_str, start_idx));
return interp.OK;
});
/* ==================== command string match ===================================== */
interp.registerSubCommand("::string", "match", function (interp, args) {
args.shift();
this.requireMinArgc(args, 2, "string match", "");
var usage = "string match ?-nocase? pattern string";
|