goscript 0.0.25 → 0.0.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/cmd/goscript/cmd_compile.go +0 -3
- package/cmd/goscript/deps.go +11 -0
- package/compiler/analysis.go +259 -55
- package/compiler/assignment.go +2 -2
- package/compiler/builtin_test.go +1 -1
- package/compiler/compiler.go +201 -49
- package/compiler/compiler_test.go +53 -0
- package/compiler/composite-lit.go +32 -8
- package/compiler/decl.go +6 -6
- package/compiler/expr-call.go +83 -0
- package/compiler/expr.go +1 -1
- package/compiler/protobuf.go +557 -0
- package/compiler/spec-struct.go +4 -0
- package/compiler/spec-value.go +11 -3
- package/compiler/spec.go +18 -1
- package/compiler/stmt-assign.go +35 -0
- package/compiler/type-assert.go +87 -0
- package/compiler/type.go +5 -2
- package/dist/gs/builtin/builtin.d.ts +19 -1
- package/dist/gs/builtin/builtin.js +85 -5
- package/dist/gs/builtin/builtin.js.map +1 -1
- package/dist/gs/builtin/channel.js.map +1 -1
- package/dist/gs/builtin/slice.d.ts +1 -1
- package/dist/gs/builtin/slice.js +59 -26
- package/dist/gs/builtin/slice.js.map +1 -1
- package/dist/gs/cmp/index.js.map +1 -1
- package/dist/gs/context/context.d.ts +1 -1
- package/dist/gs/context/context.js +20 -11
- package/dist/gs/context/context.js.map +1 -1
- package/dist/gs/errors/errors.d.ts +7 -0
- package/dist/gs/errors/errors.js +190 -0
- package/dist/gs/errors/errors.js.map +1 -0
- package/dist/gs/errors/index.d.ts +1 -0
- package/dist/gs/errors/index.js +2 -0
- package/dist/gs/errors/index.js.map +1 -0
- package/dist/gs/internal/goarch/index.js +1 -1
- package/dist/gs/internal/goarch/index.js.map +1 -1
- package/dist/gs/io/index.d.ts +1 -0
- package/dist/gs/io/index.js +2 -0
- package/dist/gs/io/index.js.map +1 -0
- package/dist/gs/io/io.d.ts +107 -0
- package/dist/gs/io/io.js +385 -0
- package/dist/gs/io/io.js.map +1 -0
- package/dist/gs/iter/iter.js.map +1 -1
- package/dist/gs/math/bits/index.js +34 -32
- package/dist/gs/math/bits/index.js.map +1 -1
- package/dist/gs/runtime/runtime.d.ts +1 -0
- package/dist/gs/runtime/runtime.js +15 -18
- package/dist/gs/runtime/runtime.js.map +1 -1
- package/dist/gs/slices/slices.d.ts +1 -1
- package/dist/gs/slices/slices.js +1 -1
- package/dist/gs/slices/slices.js.map +1 -1
- package/dist/gs/strings/builder.d.ts +18 -0
- package/dist/gs/strings/builder.js +205 -0
- package/dist/gs/strings/builder.js.map +1 -0
- package/dist/gs/strings/clone.d.ts +1 -0
- package/dist/gs/strings/clone.js +16 -0
- package/dist/gs/strings/clone.js.map +1 -0
- package/dist/gs/strings/compare.d.ts +1 -0
- package/dist/gs/strings/compare.js +14 -0
- package/dist/gs/strings/compare.js.map +1 -0
- package/dist/gs/strings/index.d.ts +2 -0
- package/dist/gs/strings/index.js +3 -0
- package/dist/gs/strings/index.js.map +1 -0
- package/dist/gs/strings/iter.d.ts +8 -0
- package/dist/gs/strings/iter.js +160 -0
- package/dist/gs/strings/iter.js.map +1 -0
- package/dist/gs/strings/reader.d.ts +34 -0
- package/dist/gs/strings/reader.js +418 -0
- package/dist/gs/strings/reader.js.map +1 -0
- package/dist/gs/strings/replace.d.ts +106 -0
- package/dist/gs/strings/replace.js +1136 -0
- package/dist/gs/strings/replace.js.map +1 -0
- package/dist/gs/strings/search.d.ts +24 -0
- package/dist/gs/strings/search.js +169 -0
- package/dist/gs/strings/search.js.map +1 -0
- package/dist/gs/strings/strings.d.ts +47 -0
- package/dist/gs/strings/strings.js +418 -0
- package/dist/gs/strings/strings.js.map +1 -0
- package/dist/gs/stringslite/index.d.ts +1 -0
- package/dist/gs/stringslite/index.js +2 -0
- package/dist/gs/stringslite/index.js.map +1 -0
- package/dist/gs/stringslite/strings.d.ts +11 -0
- package/dist/gs/stringslite/strings.js +67 -0
- package/dist/gs/stringslite/strings.js.map +1 -0
- package/dist/gs/sync/index.d.ts +1 -0
- package/dist/gs/sync/index.js +2 -0
- package/dist/gs/sync/index.js.map +1 -0
- package/dist/gs/sync/sync.d.ts +79 -0
- package/dist/gs/sync/sync.js +392 -0
- package/dist/gs/sync/sync.js.map +1 -0
- package/dist/gs/time/time.js +7 -7
- package/dist/gs/time/time.js.map +1 -1
- package/dist/gs/unicode/index.d.ts +1 -0
- package/dist/gs/unicode/index.js +2 -0
- package/dist/gs/unicode/index.js.map +1 -0
- package/dist/gs/unicode/unicode.d.ts +105 -0
- package/dist/gs/unicode/unicode.js +332 -0
- package/dist/gs/unicode/unicode.js.map +1 -0
- package/dist/gs/unicode/utf8/index.d.ts +1 -0
- package/dist/gs/unicode/utf8/index.js +3 -0
- package/dist/gs/unicode/utf8/index.js.map +1 -0
- package/dist/gs/unicode/utf8/utf8.d.ts +20 -0
- package/dist/gs/unicode/utf8/utf8.js +196 -0
- package/dist/gs/unicode/utf8/utf8.js.map +1 -0
- package/dist/gs/unsafe/index.d.ts +1 -0
- package/dist/gs/unsafe/index.js +2 -0
- package/dist/gs/unsafe/index.js.map +1 -0
- package/dist/gs/unsafe/unsafe.d.ts +11 -0
- package/dist/gs/unsafe/unsafe.js +44 -0
- package/dist/gs/unsafe/unsafe.js.map +1 -0
- package/go.mod +2 -1
- package/go.sum +6 -2
- package/gs/README.md +6 -0
- package/gs/builtin/builtin.ts +158 -0
- package/gs/builtin/channel.ts +683 -0
- package/gs/builtin/defer.ts +58 -0
- package/gs/builtin/index.ts +1 -0
- package/gs/builtin/io.ts +22 -0
- package/gs/builtin/map.ts +50 -0
- package/gs/builtin/slice.ts +1030 -0
- package/gs/builtin/type.ts +1106 -0
- package/gs/builtin/varRef.ts +25 -0
- package/gs/cmp/godoc.txt +8 -0
- package/gs/cmp/index.ts +29 -0
- package/gs/context/context.ts +401 -0
- package/gs/context/godoc.txt +69 -0
- package/gs/context/index.ts +1 -0
- package/gs/errors/errors.ts +223 -0
- package/gs/errors/godoc.txt +63 -0
- package/gs/errors/index.ts +1 -0
- package/gs/internal/goarch/godoc.txt +39 -0
- package/gs/internal/goarch/index.ts +18 -0
- package/gs/io/godoc.txt +61 -0
- package/gs/io/index.ts +1 -0
- package/gs/io/io.go +75 -0
- package/gs/io/io.ts +546 -0
- package/gs/iter/godoc.txt +203 -0
- package/gs/iter/index.ts +1 -0
- package/gs/iter/iter.ts +117 -0
- package/gs/math/bits/index.ts +356 -0
- package/gs/math/godoc.txt +76 -0
- package/gs/runtime/godoc.txt +331 -0
- package/gs/runtime/index.ts +1 -0
- package/gs/runtime/runtime.ts +178 -0
- package/gs/slices/godoc.txt +44 -0
- package/gs/slices/index.ts +1 -0
- package/gs/slices/slices.ts +22 -0
- package/gs/strings/builder.test.ts +121 -0
- package/gs/strings/builder.ts +223 -0
- package/gs/strings/clone.test.ts +43 -0
- package/gs/strings/clone.ts +17 -0
- package/gs/strings/compare.test.ts +84 -0
- package/gs/strings/compare.ts +13 -0
- package/gs/strings/godoc.txt +66 -0
- package/gs/strings/index.ts +2 -0
- package/gs/strings/iter.test.ts +343 -0
- package/gs/strings/iter.ts +171 -0
- package/gs/strings/reader.test.ts +243 -0
- package/gs/strings/reader.ts +451 -0
- package/gs/strings/replace.test.ts +181 -0
- package/gs/strings/replace.ts +1310 -0
- package/gs/strings/search.test.ts +214 -0
- package/gs/strings/search.ts +213 -0
- package/gs/strings/strings.test.ts +477 -0
- package/gs/strings/strings.ts +510 -0
- package/gs/stringslite/godoc.txt +17 -0
- package/gs/stringslite/index.ts +1 -0
- package/gs/stringslite/strings.ts +82 -0
- package/gs/sync/godoc.txt +21 -0
- package/gs/sync/index.ts +1 -0
- package/gs/sync/sync.go +64 -0
- package/gs/sync/sync.ts +449 -0
- package/gs/time/godoc.md +116 -0
- package/gs/time/godoc.txt +116 -0
- package/gs/time/index.ts +1 -0
- package/gs/time/time.ts +272 -0
- package/gs/unicode/godoc.txt +52 -0
- package/gs/unicode/index.ts +1 -0
- package/gs/unicode/unicode.go +38 -0
- package/gs/unicode/unicode.ts +418 -0
- package/gs/unicode/utf8/godoc.txt +22 -0
- package/gs/unicode/utf8/index.ts +2 -0
- package/gs/unicode/utf8/utf8.ts +227 -0
- package/gs/unsafe/godoc.txt +19 -0
- package/gs/unsafe/index.ts +1 -0
- package/gs/unsafe/unsafe.test.ts +68 -0
- package/gs/unsafe/unsafe.ts +77 -0
- package/package.json +6 -4
|
@@ -0,0 +1,418 @@
|
|
|
1
|
+
import * as $ from '@goscript/builtin/builtin.js';
|
|
2
|
+
// Helper function to convert string to runes (code points)
|
|
3
|
+
function stringToRunes(s) {
|
|
4
|
+
const runes = [];
|
|
5
|
+
for (const char of s) {
|
|
6
|
+
runes.push(char.codePointAt(0) || 0);
|
|
7
|
+
}
|
|
8
|
+
return runes;
|
|
9
|
+
}
|
|
10
|
+
// Helper function to convert runes to string
|
|
11
|
+
function runesToString(runes) {
|
|
12
|
+
return String.fromCodePoint(...runes);
|
|
13
|
+
}
|
|
14
|
+
// Count counts the number of non-overlapping instances of substr in s.
|
|
15
|
+
// If substr is an empty string, Count returns 1 + the number of Unicode code points in s.
|
|
16
|
+
export function Count(s, substr) {
|
|
17
|
+
if (substr === '') {
|
|
18
|
+
return [...s].length + 1; // Unicode-aware length
|
|
19
|
+
}
|
|
20
|
+
let count = 0;
|
|
21
|
+
let pos = 0;
|
|
22
|
+
while (true) {
|
|
23
|
+
const index = s.indexOf(substr, pos);
|
|
24
|
+
if (index === -1)
|
|
25
|
+
break;
|
|
26
|
+
count++;
|
|
27
|
+
pos = index + substr.length;
|
|
28
|
+
}
|
|
29
|
+
return count;
|
|
30
|
+
}
|
|
31
|
+
// Contains reports whether substr is within s.
|
|
32
|
+
export function Contains(s, substr) {
|
|
33
|
+
return s.includes(substr);
|
|
34
|
+
}
|
|
35
|
+
// ContainsAny reports whether any Unicode code points in chars are within s.
|
|
36
|
+
export function ContainsAny(s, chars) {
|
|
37
|
+
for (const char of chars) {
|
|
38
|
+
if (s.includes(char)) {
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
// ContainsRune reports whether the Unicode code point r is within s.
|
|
45
|
+
export function ContainsRune(s, r) {
|
|
46
|
+
const char = String.fromCodePoint(r);
|
|
47
|
+
return s.includes(char);
|
|
48
|
+
}
|
|
49
|
+
// ContainsFunc reports whether any Unicode code points r within s satisfy f(r).
|
|
50
|
+
export function ContainsFunc(s, f) {
|
|
51
|
+
if (!f)
|
|
52
|
+
return false;
|
|
53
|
+
for (const char of s) {
|
|
54
|
+
const codePoint = char.codePointAt(0);
|
|
55
|
+
if (codePoint !== undefined && f(codePoint)) {
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
// Index returns the index of the first instance of substr in s, or -1 if substr is not present in s.
|
|
62
|
+
export function Index(s, substr) {
|
|
63
|
+
return s.indexOf(substr);
|
|
64
|
+
}
|
|
65
|
+
// LastIndex returns the index of the last instance of substr in s, or -1 if substr is not present in s.
|
|
66
|
+
export function LastIndex(s, substr) {
|
|
67
|
+
return s.lastIndexOf(substr);
|
|
68
|
+
}
|
|
69
|
+
// IndexByte returns the index of the first instance of c in s, or -1 if c is not present in s.
|
|
70
|
+
export function IndexByte(s, c) {
|
|
71
|
+
const char = String.fromCharCode(c);
|
|
72
|
+
return s.indexOf(char);
|
|
73
|
+
}
|
|
74
|
+
// IndexRune returns the index of the first instance of the Unicode code point r, or -1 if rune is not present in s.
|
|
75
|
+
export function IndexRune(s, r) {
|
|
76
|
+
const char = String.fromCodePoint(r);
|
|
77
|
+
return s.indexOf(char);
|
|
78
|
+
}
|
|
79
|
+
// IndexAny returns the index of the first instance of any Unicode code point from chars in s, or -1 if no Unicode code point from chars is present in s.
|
|
80
|
+
export function IndexAny(s, chars) {
|
|
81
|
+
for (let i = 0; i < s.length; i++) {
|
|
82
|
+
if (chars.includes(s[i])) {
|
|
83
|
+
return i;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return -1;
|
|
87
|
+
}
|
|
88
|
+
// LastIndexAny returns the index of the last instance of any Unicode code point from chars in s, or -1 if no Unicode code point from chars is present in s.
|
|
89
|
+
export function LastIndexAny(s, chars) {
|
|
90
|
+
for (let i = s.length - 1; i >= 0; i--) {
|
|
91
|
+
if (chars.includes(s[i])) {
|
|
92
|
+
return i;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return -1;
|
|
96
|
+
}
|
|
97
|
+
// LastIndexByte returns the index of the last instance of c in s, or -1 if c is not present in s.
|
|
98
|
+
export function LastIndexByte(s, c) {
|
|
99
|
+
const char = String.fromCharCode(c);
|
|
100
|
+
return s.lastIndexOf(char);
|
|
101
|
+
}
|
|
102
|
+
// IndexFunc returns the index into s of the first Unicode code point satisfying f(c), or -1 if none do.
|
|
103
|
+
export function IndexFunc(s, f) {
|
|
104
|
+
if (!f)
|
|
105
|
+
return -1;
|
|
106
|
+
let index = 0;
|
|
107
|
+
for (const char of s) {
|
|
108
|
+
const codePoint = char.codePointAt(0);
|
|
109
|
+
if (codePoint !== undefined && f(codePoint)) {
|
|
110
|
+
return index;
|
|
111
|
+
}
|
|
112
|
+
index += char.length;
|
|
113
|
+
}
|
|
114
|
+
return -1;
|
|
115
|
+
}
|
|
116
|
+
// LastIndexFunc returns the index into s of the last Unicode code point satisfying f(c), or -1 if none do.
|
|
117
|
+
export function LastIndexFunc(s, f) {
|
|
118
|
+
if (!f)
|
|
119
|
+
return -1;
|
|
120
|
+
const chars = [...s];
|
|
121
|
+
for (let i = chars.length - 1; i >= 0; i--) {
|
|
122
|
+
const codePoint = chars[i].codePointAt(0);
|
|
123
|
+
if (codePoint !== undefined && f(codePoint)) {
|
|
124
|
+
// Calculate byte index
|
|
125
|
+
return chars.slice(0, i).join('').length;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return -1;
|
|
129
|
+
}
|
|
130
|
+
// Split slices s into all substrings separated by sep and returns a slice of the substrings between those separators.
|
|
131
|
+
export function Split(s, sep) {
|
|
132
|
+
if (sep === '') {
|
|
133
|
+
// Split into individual characters
|
|
134
|
+
return $.arrayToSlice([...s]);
|
|
135
|
+
}
|
|
136
|
+
return $.arrayToSlice(s.split(sep));
|
|
137
|
+
}
|
|
138
|
+
// SplitN slices s into substrings separated by sep and returns a slice of the substrings between those separators.
|
|
139
|
+
export function SplitN(s, sep, n) {
|
|
140
|
+
if (n == 0) {
|
|
141
|
+
return $.arrayToSlice([]);
|
|
142
|
+
}
|
|
143
|
+
if (n === 1) {
|
|
144
|
+
return $.arrayToSlice([s]);
|
|
145
|
+
}
|
|
146
|
+
if (sep === '') {
|
|
147
|
+
const chars = [...s];
|
|
148
|
+
if (n < 0) {
|
|
149
|
+
return $.arrayToSlice(chars);
|
|
150
|
+
}
|
|
151
|
+
return $.arrayToSlice(chars.slice(0, n));
|
|
152
|
+
}
|
|
153
|
+
const parts = s.split(sep);
|
|
154
|
+
if (n < 0 || parts.length <= n) {
|
|
155
|
+
return $.arrayToSlice(parts);
|
|
156
|
+
}
|
|
157
|
+
const result = parts.slice(0, n - 1);
|
|
158
|
+
result.push(parts.slice(n - 1).join(sep));
|
|
159
|
+
return $.arrayToSlice(result);
|
|
160
|
+
}
|
|
161
|
+
// SplitAfter slices s into all substrings after each instance of sep and returns a slice of those substrings.
|
|
162
|
+
export function SplitAfter(s, sep) {
|
|
163
|
+
return SplitAfterN(s, sep, -1);
|
|
164
|
+
}
|
|
165
|
+
// SplitAfterN slices s into substrings after each instance of sep and returns a slice of those substrings.
|
|
166
|
+
export function SplitAfterN(s, sep, n) {
|
|
167
|
+
if (n == 0) {
|
|
168
|
+
return $.arrayToSlice([]);
|
|
169
|
+
}
|
|
170
|
+
if (sep === '') {
|
|
171
|
+
const chars = [...s];
|
|
172
|
+
if (n < 0) {
|
|
173
|
+
return $.arrayToSlice(chars);
|
|
174
|
+
}
|
|
175
|
+
return $.arrayToSlice(chars.slice(0, n));
|
|
176
|
+
}
|
|
177
|
+
const parts = [];
|
|
178
|
+
let start = 0;
|
|
179
|
+
let count = 0;
|
|
180
|
+
while (n < 0 || count < n - 1) {
|
|
181
|
+
const index = s.indexOf(sep, start);
|
|
182
|
+
if (index === -1)
|
|
183
|
+
break;
|
|
184
|
+
parts.push(s.slice(start, index + sep.length));
|
|
185
|
+
start = index + sep.length;
|
|
186
|
+
count++;
|
|
187
|
+
}
|
|
188
|
+
if (start < s.length) {
|
|
189
|
+
parts.push(s.slice(start));
|
|
190
|
+
}
|
|
191
|
+
return $.arrayToSlice(parts);
|
|
192
|
+
}
|
|
193
|
+
// Fields splits the string s around each instance of one or more consecutive white space characters.
|
|
194
|
+
export function Fields(s) {
|
|
195
|
+
return $.arrayToSlice(s
|
|
196
|
+
.trim()
|
|
197
|
+
.split(/\s+/)
|
|
198
|
+
.filter((part) => part.length > 0));
|
|
199
|
+
}
|
|
200
|
+
// FieldsFunc splits the string s at each run of Unicode code points c satisfying f(c) and returns an array of slices of s.
|
|
201
|
+
export function FieldsFunc(s, f) {
|
|
202
|
+
if (!f)
|
|
203
|
+
return $.arrayToSlice([s]);
|
|
204
|
+
const parts = [];
|
|
205
|
+
let start = 0;
|
|
206
|
+
let inField = false;
|
|
207
|
+
let index = 0;
|
|
208
|
+
for (const char of s) {
|
|
209
|
+
const codePoint = char.codePointAt(0);
|
|
210
|
+
if (codePoint !== undefined && f(codePoint)) {
|
|
211
|
+
if (inField) {
|
|
212
|
+
parts.push(s.slice(start, index));
|
|
213
|
+
inField = false;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
else {
|
|
217
|
+
if (!inField) {
|
|
218
|
+
start = index;
|
|
219
|
+
inField = true;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
index += char.length;
|
|
223
|
+
}
|
|
224
|
+
if (inField) {
|
|
225
|
+
parts.push(s.slice(start));
|
|
226
|
+
}
|
|
227
|
+
return $.arrayToSlice(parts);
|
|
228
|
+
}
|
|
229
|
+
// Join concatenates the elements of elems to create a single string. The separator string sep is placed between elements in the resulting string.
|
|
230
|
+
export function Join(elems, sep) {
|
|
231
|
+
const arr = $.asArray(elems);
|
|
232
|
+
if (!Array.isArray(arr)) {
|
|
233
|
+
return '';
|
|
234
|
+
}
|
|
235
|
+
return arr.join(sep);
|
|
236
|
+
}
|
|
237
|
+
// HasPrefix tests whether the string s begins with prefix.
|
|
238
|
+
export function HasPrefix(s, prefix) {
|
|
239
|
+
return s.startsWith(prefix);
|
|
240
|
+
}
|
|
241
|
+
// HasSuffix tests whether the string s ends with suffix.
|
|
242
|
+
export function HasSuffix(s, suffix) {
|
|
243
|
+
return s.endsWith(suffix);
|
|
244
|
+
}
|
|
245
|
+
// Map returns a copy of the string s with all its characters modified according to the mapping function.
|
|
246
|
+
export function Map(mapping, s) {
|
|
247
|
+
if (!mapping)
|
|
248
|
+
return s;
|
|
249
|
+
let result = '';
|
|
250
|
+
for (const char of s) {
|
|
251
|
+
const codePoint = char.codePointAt(0);
|
|
252
|
+
if (codePoint !== undefined) {
|
|
253
|
+
const mapped = mapping(codePoint);
|
|
254
|
+
result += String.fromCodePoint(mapped);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
return result;
|
|
258
|
+
}
|
|
259
|
+
// Repeat returns a new string consisting of count copies of the string s.
|
|
260
|
+
export function Repeat(s, count) {
|
|
261
|
+
if (count < 0) {
|
|
262
|
+
$.panic('strings: negative Repeat count');
|
|
263
|
+
}
|
|
264
|
+
return s.repeat(count);
|
|
265
|
+
}
|
|
266
|
+
// ToUpper returns s with all Unicode letters mapped to their upper case.
|
|
267
|
+
export function ToUpper(s) {
|
|
268
|
+
return s.toUpperCase();
|
|
269
|
+
}
|
|
270
|
+
// ToLower returns s with all Unicode letters mapped to their lower case.
|
|
271
|
+
export function ToLower(s) {
|
|
272
|
+
return s.toLowerCase();
|
|
273
|
+
}
|
|
274
|
+
// ToTitle returns a copy of the string s with all Unicode letters mapped to their Unicode title case.
|
|
275
|
+
export function ToTitle(s) {
|
|
276
|
+
// JavaScript doesn't have a direct toTitleCase, so we'll use a simple approximation
|
|
277
|
+
return s
|
|
278
|
+
.split(' ')
|
|
279
|
+
.map((word) => word.length > 0 ?
|
|
280
|
+
word[0].toUpperCase() + word.slice(1).toLowerCase()
|
|
281
|
+
: word)
|
|
282
|
+
.join(' ');
|
|
283
|
+
}
|
|
284
|
+
// Title returns a copy of the string s with all Unicode letters that begin words mapped to their Unicode title case.
|
|
285
|
+
export function Title(s) {
|
|
286
|
+
return ToTitle(s);
|
|
287
|
+
}
|
|
288
|
+
// TrimSpace returns a slice of the string s, with all leading and trailing white space removed.
|
|
289
|
+
export function TrimSpace(s) {
|
|
290
|
+
return s.trim();
|
|
291
|
+
}
|
|
292
|
+
// Trim returns a slice of the string s with all leading and trailing Unicode code points contained in cutset removed.
|
|
293
|
+
export function Trim(s, cutset) {
|
|
294
|
+
return TrimFunc(s, (r) => cutset.includes(String.fromCodePoint(r)));
|
|
295
|
+
}
|
|
296
|
+
// TrimLeft returns a slice of the string s with all leading Unicode code points contained in cutset removed.
|
|
297
|
+
export function TrimLeft(s, cutset) {
|
|
298
|
+
return TrimLeftFunc(s, (r) => cutset.includes(String.fromCodePoint(r)));
|
|
299
|
+
}
|
|
300
|
+
// TrimRight returns a slice of the string s with all trailing Unicode code points contained in cutset removed.
|
|
301
|
+
export function TrimRight(s, cutset) {
|
|
302
|
+
return TrimRightFunc(s, (r) => cutset.includes(String.fromCodePoint(r)));
|
|
303
|
+
}
|
|
304
|
+
// TrimFunc returns a slice of the string s with all leading and trailing Unicode code points c satisfying f(c) removed.
|
|
305
|
+
export function TrimFunc(s, f) {
|
|
306
|
+
if (!f)
|
|
307
|
+
return s;
|
|
308
|
+
return TrimRightFunc(TrimLeftFunc(s, f), f);
|
|
309
|
+
}
|
|
310
|
+
// TrimLeftFunc returns a slice of the string s with all leading Unicode code points c satisfying f(c) removed.
|
|
311
|
+
export function TrimLeftFunc(s, f) {
|
|
312
|
+
if (!f)
|
|
313
|
+
return s;
|
|
314
|
+
let start = 0;
|
|
315
|
+
for (const char of s) {
|
|
316
|
+
const codePoint = char.codePointAt(0);
|
|
317
|
+
if (codePoint === undefined || !f(codePoint)) {
|
|
318
|
+
break;
|
|
319
|
+
}
|
|
320
|
+
start += char.length;
|
|
321
|
+
}
|
|
322
|
+
return s.slice(start);
|
|
323
|
+
}
|
|
324
|
+
// TrimRightFunc returns a slice of the string s with all trailing Unicode code points c satisfying f(c) removed.
|
|
325
|
+
export function TrimRightFunc(s, f) {
|
|
326
|
+
if (!f)
|
|
327
|
+
return s;
|
|
328
|
+
const chars = [...s];
|
|
329
|
+
let end = chars.length;
|
|
330
|
+
for (let i = chars.length - 1; i >= 0; i--) {
|
|
331
|
+
const codePoint = chars[i].codePointAt(0);
|
|
332
|
+
if (codePoint === undefined || !f(codePoint)) {
|
|
333
|
+
break;
|
|
334
|
+
}
|
|
335
|
+
end = i;
|
|
336
|
+
}
|
|
337
|
+
return chars.slice(0, end).join('');
|
|
338
|
+
}
|
|
339
|
+
// TrimPrefix returns s without the provided leading prefix string. If s doesn't start with prefix, s is returned unchanged.
|
|
340
|
+
export function TrimPrefix(s, prefix) {
|
|
341
|
+
if (s.startsWith(prefix)) {
|
|
342
|
+
return s.slice(prefix.length);
|
|
343
|
+
}
|
|
344
|
+
return s;
|
|
345
|
+
}
|
|
346
|
+
// TrimSuffix returns s without the provided ending suffix string. If s doesn't end with suffix, s is returned unchanged.
|
|
347
|
+
export function TrimSuffix(s, suffix) {
|
|
348
|
+
if (s.endsWith(suffix)) {
|
|
349
|
+
return s.slice(0, s.length - suffix.length);
|
|
350
|
+
}
|
|
351
|
+
return s;
|
|
352
|
+
}
|
|
353
|
+
// Replace returns a copy of the string s with the first n non-overlapping instances of old replaced by new.
|
|
354
|
+
export function Replace(s, old, newStr, n) {
|
|
355
|
+
if (n <= 0 || old === '') {
|
|
356
|
+
return s;
|
|
357
|
+
}
|
|
358
|
+
let result = s;
|
|
359
|
+
let count = 0;
|
|
360
|
+
let pos = 0;
|
|
361
|
+
while (count < n) {
|
|
362
|
+
const index = result.indexOf(old, pos);
|
|
363
|
+
if (index === -1)
|
|
364
|
+
break;
|
|
365
|
+
result = result.slice(0, index) + newStr + result.slice(index + old.length);
|
|
366
|
+
pos = index + newStr.length;
|
|
367
|
+
count++;
|
|
368
|
+
}
|
|
369
|
+
return result;
|
|
370
|
+
}
|
|
371
|
+
// ReplaceAll returns a copy of the string s with all non-overlapping instances of old replaced by new.
|
|
372
|
+
export function ReplaceAll(s, old, newStr) {
|
|
373
|
+
if (old === '') {
|
|
374
|
+
return s;
|
|
375
|
+
}
|
|
376
|
+
return s.split(old).join(newStr);
|
|
377
|
+
}
|
|
378
|
+
// EqualFold reports whether s and t, interpreted as UTF-8 strings, are equal under Unicode case-folding.
|
|
379
|
+
export function EqualFold(s, t) {
|
|
380
|
+
return s.toLowerCase() === t.toLowerCase();
|
|
381
|
+
}
|
|
382
|
+
// Compare returns an integer comparing two strings lexicographically.
|
|
383
|
+
export function Compare(a, b) {
|
|
384
|
+
if (a < b)
|
|
385
|
+
return -1;
|
|
386
|
+
if (a > b)
|
|
387
|
+
return 1;
|
|
388
|
+
return 0;
|
|
389
|
+
}
|
|
390
|
+
// Cut slices s around the first instance of sep, returning the text before and after sep.
|
|
391
|
+
export function Cut(s, sep) {
|
|
392
|
+
const index = s.indexOf(sep);
|
|
393
|
+
if (index === -1) {
|
|
394
|
+
return [s, '', false];
|
|
395
|
+
}
|
|
396
|
+
return [s.slice(0, index), s.slice(index + sep.length), true];
|
|
397
|
+
}
|
|
398
|
+
// CutPrefix returns s without the provided leading prefix string and reports whether it found the prefix.
|
|
399
|
+
export function CutPrefix(s, prefix) {
|
|
400
|
+
if (s.startsWith(prefix)) {
|
|
401
|
+
return [s.slice(prefix.length), true];
|
|
402
|
+
}
|
|
403
|
+
return [s, false];
|
|
404
|
+
}
|
|
405
|
+
// CutSuffix returns s without the provided ending suffix string and reports whether it found the suffix.
|
|
406
|
+
export function CutSuffix(s, suffix) {
|
|
407
|
+
if (s.endsWith(suffix)) {
|
|
408
|
+
return [s.slice(0, s.length - suffix.length), true];
|
|
409
|
+
}
|
|
410
|
+
return [s, false];
|
|
411
|
+
}
|
|
412
|
+
// Clone returns a fresh copy of s.
|
|
413
|
+
export function Clone(s) {
|
|
414
|
+
// In JavaScript, strings are immutable, so we can just return the string
|
|
415
|
+
// But to match Go semantics, we'll create a new string
|
|
416
|
+
return String(s);
|
|
417
|
+
}
|
|
418
|
+
//# sourceMappingURL=strings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strings.js","sourceRoot":"","sources":["../../../gs/strings/strings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './strings';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../gs/stringslite/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare function HasPrefix(s: string, prefix: string): boolean;
|
|
2
|
+
export declare function HasSuffix(s: string, suffix: string): boolean;
|
|
3
|
+
export declare function IndexByte(s: string, c: number): number;
|
|
4
|
+
export declare function Index(s: string, substr: string): number;
|
|
5
|
+
export declare function Cut(s: string, sep: string): [string, string, boolean];
|
|
6
|
+
export declare function CutPrefix(s: string, prefix: string): [string, boolean];
|
|
7
|
+
export declare function CutSuffix(s: string, suffix: string): [string, boolean];
|
|
8
|
+
export declare function TrimPrefix(s: string, prefix: string): string;
|
|
9
|
+
export declare function TrimSuffix(s: string, suffix: string): string;
|
|
10
|
+
export declare function Clone(s: string): string;
|
|
11
|
+
export declare function CopyBytes(b: Uint8Array, s: string): number;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import * as $ from '@goscript/builtin/builtin.js';
|
|
2
|
+
import * as unsafe from '@goscript/unsafe/index.js';
|
|
3
|
+
export function HasPrefix(s, prefix) {
|
|
4
|
+
return ($.len(s) >= $.len(prefix) &&
|
|
5
|
+
$.sliceString(s, undefined, $.len(prefix)) == prefix);
|
|
6
|
+
}
|
|
7
|
+
export function HasSuffix(s, suffix) {
|
|
8
|
+
return ($.len(s) >= $.len(suffix) &&
|
|
9
|
+
$.sliceString(s, $.len(s) - $.len(suffix), undefined) == suffix);
|
|
10
|
+
}
|
|
11
|
+
export function IndexByte(s, c) {
|
|
12
|
+
const char = String.fromCharCode(c);
|
|
13
|
+
return s.indexOf(char);
|
|
14
|
+
}
|
|
15
|
+
export function Index(s, substr) {
|
|
16
|
+
if (substr === '') {
|
|
17
|
+
return 0;
|
|
18
|
+
}
|
|
19
|
+
return s.indexOf(substr);
|
|
20
|
+
}
|
|
21
|
+
export function Cut(s, sep) {
|
|
22
|
+
let i = Index(s, sep);
|
|
23
|
+
if (i >= 0) {
|
|
24
|
+
return [
|
|
25
|
+
$.sliceString(s, undefined, i),
|
|
26
|
+
$.sliceString(s, i + $.len(sep), undefined),
|
|
27
|
+
true,
|
|
28
|
+
];
|
|
29
|
+
}
|
|
30
|
+
return [s, '', false];
|
|
31
|
+
}
|
|
32
|
+
export function CutPrefix(s, prefix) {
|
|
33
|
+
if (!HasPrefix(s, prefix)) {
|
|
34
|
+
return [s, false];
|
|
35
|
+
}
|
|
36
|
+
return [$.sliceString(s, $.len(prefix), undefined), true];
|
|
37
|
+
}
|
|
38
|
+
export function CutSuffix(s, suffix) {
|
|
39
|
+
if (!HasSuffix(s, suffix)) {
|
|
40
|
+
return [s, false];
|
|
41
|
+
}
|
|
42
|
+
return [$.sliceString(s, undefined, $.len(s) - $.len(suffix)), true];
|
|
43
|
+
}
|
|
44
|
+
export function TrimPrefix(s, prefix) {
|
|
45
|
+
if (HasPrefix(s, prefix)) {
|
|
46
|
+
return $.sliceString(s, $.len(prefix), undefined);
|
|
47
|
+
}
|
|
48
|
+
return s;
|
|
49
|
+
}
|
|
50
|
+
export function TrimSuffix(s, suffix) {
|
|
51
|
+
if (HasSuffix(s, suffix)) {
|
|
52
|
+
return $.sliceString(s, undefined, $.len(s) - $.len(suffix));
|
|
53
|
+
}
|
|
54
|
+
return s;
|
|
55
|
+
}
|
|
56
|
+
export function Clone(s) {
|
|
57
|
+
if ($.len(s) == 0) {
|
|
58
|
+
return '';
|
|
59
|
+
}
|
|
60
|
+
let b = new Uint8Array($.len(s));
|
|
61
|
+
$.copy(b, s);
|
|
62
|
+
return unsafe.String(b[0], $.len(b));
|
|
63
|
+
}
|
|
64
|
+
export function CopyBytes(b, s) {
|
|
65
|
+
return $.copy(b, s);
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=strings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strings.js","sourceRoot":"","sources":["../../../gs/stringslite/strings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './sync.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../gs/sync/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
export interface Locker {
|
|
2
|
+
Lock(): Promise<void>;
|
|
3
|
+
Unlock(): void;
|
|
4
|
+
}
|
|
5
|
+
export declare class Mutex implements Locker {
|
|
6
|
+
private _locked;
|
|
7
|
+
private _waitQueue;
|
|
8
|
+
constructor(init?: Partial<{}>);
|
|
9
|
+
Lock(): Promise<void>;
|
|
10
|
+
TryLock(): boolean;
|
|
11
|
+
Unlock(): void;
|
|
12
|
+
clone(): Mutex;
|
|
13
|
+
}
|
|
14
|
+
export declare class RWMutex {
|
|
15
|
+
private _readers;
|
|
16
|
+
private _writer;
|
|
17
|
+
private _readerWaitQueue;
|
|
18
|
+
private _writerWaitQueue;
|
|
19
|
+
constructor(init?: Partial<{}>);
|
|
20
|
+
Lock(): Promise<void>;
|
|
21
|
+
TryLock(): boolean;
|
|
22
|
+
Unlock(): void;
|
|
23
|
+
RLock(): Promise<void>;
|
|
24
|
+
TryRLock(): boolean;
|
|
25
|
+
RUnlock(): void;
|
|
26
|
+
private _wakeUpWaiters;
|
|
27
|
+
clone(): RWMutex;
|
|
28
|
+
}
|
|
29
|
+
export declare class WaitGroup {
|
|
30
|
+
private _counter;
|
|
31
|
+
private _waiters;
|
|
32
|
+
constructor(init?: Partial<{}>);
|
|
33
|
+
Add(delta: number): void;
|
|
34
|
+
Done(): void;
|
|
35
|
+
Wait(): Promise<void>;
|
|
36
|
+
clone(): WaitGroup;
|
|
37
|
+
}
|
|
38
|
+
export declare class Once {
|
|
39
|
+
private _done;
|
|
40
|
+
private _m;
|
|
41
|
+
constructor(init?: Partial<{}>);
|
|
42
|
+
Do(f: () => void): Promise<void>;
|
|
43
|
+
clone(): Once;
|
|
44
|
+
}
|
|
45
|
+
export declare class Cond {
|
|
46
|
+
private _l;
|
|
47
|
+
private _waiters;
|
|
48
|
+
constructor(l: Locker);
|
|
49
|
+
Broadcast(): void;
|
|
50
|
+
Signal(): void;
|
|
51
|
+
Wait(): Promise<void>;
|
|
52
|
+
clone(): Cond;
|
|
53
|
+
}
|
|
54
|
+
export declare function NewCond(l: Locker): Cond;
|
|
55
|
+
export declare class Map {
|
|
56
|
+
private _m;
|
|
57
|
+
private _data;
|
|
58
|
+
constructor(init?: Partial<{}>);
|
|
59
|
+
Delete(key: any): Promise<void>;
|
|
60
|
+
Load(key: any): Promise<[any, boolean]>;
|
|
61
|
+
LoadAndDelete(key: any): Promise<[any, boolean]>;
|
|
62
|
+
LoadOrStore(key: any, value: any): Promise<[any, boolean]>;
|
|
63
|
+
Range(f: (key: any, value: any) => boolean): Promise<void>;
|
|
64
|
+
Store(key: any, value: any): Promise<void>;
|
|
65
|
+
clone(): Map;
|
|
66
|
+
}
|
|
67
|
+
export declare class Pool {
|
|
68
|
+
New?: () => any;
|
|
69
|
+
private _pool;
|
|
70
|
+
constructor(init?: Partial<{
|
|
71
|
+
New?: () => any;
|
|
72
|
+
}>);
|
|
73
|
+
Get(): any;
|
|
74
|
+
Put(x: any): void;
|
|
75
|
+
clone(): Pool;
|
|
76
|
+
}
|
|
77
|
+
export declare function OnceFunc(f: () => void): () => void;
|
|
78
|
+
export declare function OnceValue<T>(f: () => T): () => T;
|
|
79
|
+
export declare function OnceValues<T1, T2>(f: () => [T1, T2]): () => [T1, T2];
|