goscript 0.0.34 → 0.0.36
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/compiler/analysis.go +28 -20
- package/compiler/analysis_test.go +14 -0
- package/compiler/assignment.go +19 -7
- package/compiler/compiler.go +15 -99
- package/compiler/composite-lit.go +60 -17
- package/compiler/decl.go +1 -1
- package/compiler/expr-call.go +233 -35
- package/compiler/expr-selector.go +28 -2
- package/compiler/expr.go +13 -37
- package/compiler/lit.go +111 -2
- package/compiler/primitive.go +6 -6
- package/compiler/protobuf.go +0 -5
- package/compiler/sanitize.go +101 -0
- package/compiler/spec-struct.go +41 -8
- package/compiler/spec-value.go +29 -18
- package/compiler/stmt-assign.go +22 -1
- package/compiler/stmt.go +26 -9
- package/compiler/type.go +3 -3
- package/dist/gs/builtin/builtin.d.ts +3 -2
- package/dist/gs/builtin/builtin.js +2 -1
- package/dist/gs/builtin/builtin.js.map +1 -1
- package/dist/gs/builtin/map.js.map +1 -1
- package/dist/gs/builtin/slice.d.ts +7 -1
- package/dist/gs/builtin/slice.js +112 -22
- package/dist/gs/builtin/slice.js.map +1 -1
- package/dist/gs/github.com/pkg/errors/errors.d.ts +13 -0
- package/dist/gs/github.com/pkg/errors/errors.js +232 -0
- package/dist/gs/github.com/pkg/errors/errors.js.map +1 -0
- package/dist/gs/github.com/pkg/errors/go113.d.ts +4 -0
- package/dist/gs/github.com/pkg/errors/go113.js +34 -0
- package/dist/gs/github.com/pkg/errors/go113.js.map +1 -0
- package/dist/gs/github.com/pkg/errors/index.d.ts +3 -0
- package/dist/gs/github.com/pkg/errors/index.js +4 -0
- package/dist/gs/github.com/pkg/errors/index.js.map +1 -0
- package/dist/gs/github.com/pkg/errors/stack.d.ts +32 -0
- package/dist/gs/github.com/pkg/errors/stack.js +111 -0
- package/dist/gs/github.com/pkg/errors/stack.js.map +1 -0
- package/dist/gs/maps/index.d.ts +2 -2
- package/dist/gs/maps/index.js +2 -2
- package/dist/gs/maps/index.js.map +1 -1
- package/dist/gs/maps/iter.d.ts +7 -0
- package/dist/gs/maps/iter.js +57 -0
- package/dist/gs/maps/iter.js.map +1 -0
- package/dist/gs/maps/maps.d.ts +7 -0
- package/dist/gs/maps/maps.js +67 -0
- package/dist/gs/maps/maps.js.map +1 -0
- package/dist/gs/math/abs.gs.d.ts +1 -0
- package/dist/gs/math/abs.gs.js +10 -0
- package/dist/gs/math/abs.gs.js.map +1 -0
- package/dist/gs/math/acosh.gs.d.ts +2 -0
- package/dist/gs/math/acosh.gs.js +14 -0
- package/dist/gs/math/acosh.gs.js.map +1 -0
- package/dist/gs/math/asin.gs.d.ts +4 -0
- package/dist/gs/math/asin.gs.js +24 -0
- package/dist/gs/math/asin.gs.js.map +1 -0
- package/dist/gs/math/asinh.gs.d.ts +2 -0
- package/dist/gs/math/asinh.gs.js +14 -0
- package/dist/gs/math/asinh.gs.js.map +1 -0
- package/dist/gs/math/atan.gs.d.ts +4 -0
- package/dist/gs/math/atan.gs.js +22 -0
- package/dist/gs/math/atan.gs.js.map +1 -0
- package/dist/gs/math/atan2.gs.d.ts +2 -0
- package/dist/gs/math/atan2.gs.js +30 -0
- package/dist/gs/math/atan2.gs.js.map +1 -0
- package/dist/gs/math/atanh.gs.d.ts +2 -0
- package/dist/gs/math/atanh.gs.js +16 -0
- package/dist/gs/math/atanh.gs.js.map +1 -0
- package/dist/gs/math/bits.gs.d.ts +5 -0
- package/dist/gs/math/bits.gs.js +46 -0
- package/dist/gs/math/bits.gs.js.map +1 -0
- package/dist/gs/math/cbrt.gs.d.ts +2 -0
- package/dist/gs/math/cbrt.gs.js +14 -0
- package/dist/gs/math/cbrt.gs.js.map +1 -0
- package/dist/gs/math/const.gs.d.ts +30 -0
- package/dist/gs/math/const.gs.js +61 -0
- package/dist/gs/math/const.gs.js.map +1 -0
- package/dist/gs/math/copysign.gs.d.ts +1 -0
- package/dist/gs/math/copysign.gs.js +20 -0
- package/dist/gs/math/copysign.gs.js.map +1 -0
- package/dist/gs/math/dim.gs.d.ts +5 -0
- package/dist/gs/math/dim.gs.js +69 -0
- package/dist/gs/math/dim.gs.js.map +1 -0
- package/dist/gs/math/erf.gs.d.ts +4 -0
- package/dist/gs/math/erf.gs.js +336 -0
- package/dist/gs/math/erf.gs.js.map +1 -0
- package/dist/gs/math/erfinv.gs.d.ts +2 -0
- package/dist/gs/math/erfinv.gs.js +118 -0
- package/dist/gs/math/erfinv.gs.js.map +1 -0
- package/dist/gs/math/exp.gs.d.ts +5 -0
- package/dist/gs/math/exp.gs.js +30 -0
- package/dist/gs/math/exp.gs.js.map +1 -0
- package/dist/gs/math/expm1.gs.d.ts +2 -0
- package/dist/gs/math/expm1.gs.js +17 -0
- package/dist/gs/math/expm1.gs.js.map +1 -0
- package/dist/gs/math/floor.gs.d.ts +8 -0
- package/dist/gs/math/floor.gs.js +75 -0
- package/dist/gs/math/floor.gs.js.map +1 -0
- package/dist/gs/math/fma.gs.d.ts +1 -0
- package/dist/gs/math/fma.gs.js +8 -0
- package/dist/gs/math/fma.gs.js.map +1 -0
- package/dist/gs/math/frexp.gs.d.ts +2 -0
- package/dist/gs/math/frexp.gs.js +28 -0
- package/dist/gs/math/frexp.gs.js.map +1 -0
- package/dist/gs/math/gamma.gs.d.ts +3 -0
- package/dist/gs/math/gamma.gs.js +149 -0
- package/dist/gs/math/gamma.gs.js.map +1 -0
- package/dist/gs/math/hypot.gs.d.ts +2 -0
- package/dist/gs/math/hypot.gs.js +16 -0
- package/dist/gs/math/hypot.gs.js.map +1 -0
- package/dist/gs/math/index.d.ts +44 -0
- package/dist/gs/math/index.js +45 -0
- package/dist/gs/math/index.js.map +1 -0
- package/dist/gs/math/j0.gs.d.ts +4 -0
- package/dist/gs/math/j0.gs.js +228 -0
- package/dist/gs/math/j0.gs.js.map +1 -0
- package/dist/gs/math/j1.gs.d.ts +4 -0
- package/dist/gs/math/j1.gs.js +211 -0
- package/dist/gs/math/j1.gs.js.map +1 -0
- package/dist/gs/math/jn.gs.d.ts +2 -0
- package/dist/gs/math/jn.gs.js +412 -0
- package/dist/gs/math/jn.gs.js.map +1 -0
- package/dist/gs/math/ldexp.gs.d.ts +2 -0
- package/dist/gs/math/ldexp.gs.js +20 -0
- package/dist/gs/math/ldexp.gs.js.map +1 -0
- package/dist/gs/math/lgamma.gs.d.ts +2 -0
- package/dist/gs/math/lgamma.gs.js +243 -0
- package/dist/gs/math/lgamma.gs.js.map +1 -0
- package/dist/gs/math/log.gs.d.ts +2 -0
- package/dist/gs/math/log.gs.js +16 -0
- package/dist/gs/math/log.gs.js.map +1 -0
- package/dist/gs/math/log10.gs.d.ts +4 -0
- package/dist/gs/math/log10.gs.js +17 -0
- package/dist/gs/math/log10.gs.js.map +1 -0
- package/dist/gs/math/log1p.gs.d.ts +2 -0
- package/dist/gs/math/log1p.gs.js +17 -0
- package/dist/gs/math/log1p.gs.js.map +1 -0
- package/dist/gs/math/logb.gs.d.ts +3 -0
- package/dist/gs/math/logb.gs.js +43 -0
- package/dist/gs/math/logb.gs.js.map +1 -0
- package/dist/gs/math/mod.gs.d.ts +2 -0
- package/dist/gs/math/mod.gs.js +26 -0
- package/dist/gs/math/mod.gs.js.map +1 -0
- package/dist/gs/math/modf.gs.d.ts +2 -0
- package/dist/gs/math/modf.gs.js +24 -0
- package/dist/gs/math/modf.gs.js.map +1 -0
- package/dist/gs/math/nextafter.gs.d.ts +2 -0
- package/dist/gs/math/nextafter.gs.js +66 -0
- package/dist/gs/math/nextafter.gs.js.map +1 -0
- package/dist/gs/math/pow.gs.d.ts +3 -0
- package/dist/gs/math/pow.gs.js +40 -0
- package/dist/gs/math/pow.gs.js.map +1 -0
- package/dist/gs/math/pow10.gs.d.ts +1 -0
- package/dist/gs/math/pow10.gs.js +14 -0
- package/dist/gs/math/pow10.gs.js.map +1 -0
- package/dist/gs/math/remainder.gs.d.ts +2 -0
- package/dist/gs/math/remainder.gs.js +25 -0
- package/dist/gs/math/remainder.gs.js.map +1 -0
- package/dist/gs/math/signbit.gs.d.ts +1 -0
- package/dist/gs/math/signbit.gs.js +5 -0
- package/dist/gs/math/signbit.gs.js.map +1 -0
- package/dist/gs/math/sin.gs.d.ts +4 -0
- package/dist/gs/math/sin.gs.js +29 -0
- package/dist/gs/math/sin.gs.js.map +1 -0
- package/dist/gs/math/sincos.gs.d.ts +1 -0
- package/dist/gs/math/sincos.gs.js +11 -0
- package/dist/gs/math/sincos.gs.js.map +1 -0
- package/dist/gs/math/sinh.gs.d.ts +4 -0
- package/dist/gs/math/sinh.gs.js +27 -0
- package/dist/gs/math/sinh.gs.js.map +1 -0
- package/dist/gs/math/sqrt.gs.d.ts +2 -0
- package/dist/gs/math/sqrt.gs.js +15 -0
- package/dist/gs/math/sqrt.gs.js.map +1 -0
- package/dist/gs/math/tan.gs.d.ts +2 -0
- package/dist/gs/math/tan.gs.js +17 -0
- package/dist/gs/math/tan.gs.js.map +1 -0
- package/dist/gs/math/tanh.gs.d.ts +2 -0
- package/dist/gs/math/tanh.gs.js +17 -0
- package/dist/gs/math/tanh.gs.js.map +1 -0
- package/dist/gs/math/trig_reduce.gs.d.ts +1 -0
- package/dist/gs/math/trig_reduce.gs.js +62 -0
- package/dist/gs/math/trig_reduce.gs.js.map +1 -0
- package/dist/gs/math/unsafe.gs.d.ts +4 -0
- package/dist/gs/math/unsafe.gs.js +47 -0
- package/dist/gs/math/unsafe.gs.js.map +1 -0
- package/dist/gs/strconv/atob.gs.d.ts +4 -0
- package/dist/gs/strconv/atob.gs.js +42 -0
- package/dist/gs/strconv/atob.gs.js.map +1 -0
- package/dist/gs/strconv/atof.gs.d.ts +2 -0
- package/dist/gs/strconv/atof.gs.js +51 -0
- package/dist/gs/strconv/atof.gs.js.map +1 -0
- package/dist/gs/strconv/atoi.gs.d.ts +33 -0
- package/dist/gs/strconv/atoi.gs.js +200 -0
- package/dist/gs/strconv/atoi.gs.js.map +1 -0
- package/dist/gs/strconv/doc.gs.d.ts +1 -0
- package/dist/gs/strconv/doc.gs.js +2 -0
- package/dist/gs/strconv/doc.gs.js.map +1 -0
- package/dist/gs/strconv/ftoa.gs.d.ts +3 -0
- package/dist/gs/strconv/ftoa.gs.js +58 -0
- package/dist/gs/strconv/ftoa.gs.js.map +1 -0
- package/dist/gs/strconv/index.d.ts +6 -0
- package/dist/gs/strconv/index.js +7 -0
- package/dist/gs/strconv/index.js.map +1 -0
- package/dist/gs/strconv/itoa.gs.d.ts +6 -0
- package/dist/gs/strconv/itoa.gs.js +37 -0
- package/dist/gs/strconv/itoa.gs.js.map +1 -0
- package/dist/gs/strconv/quote.gs.d.ts +19 -0
- package/dist/gs/strconv/quote.gs.js +217 -0
- package/dist/gs/strconv/quote.gs.js.map +1 -0
- package/dist/gs/strings/index.d.ts +3 -0
- package/dist/gs/strings/index.js +4 -0
- package/dist/gs/strings/index.js.map +1 -1
- package/dist/gs/strings/replace.d.ts +0 -74
- package/dist/gs/strings/replace.js +6 -204
- package/dist/gs/strings/replace.js.map +1 -1
- package/dist/gs/strings/search.d.ts +0 -1
- package/dist/gs/strings/search.js +0 -21
- package/dist/gs/strings/search.js.map +1 -1
- package/dist/gs/sync/atomic/doc.gs.d.ts +28 -0
- package/dist/gs/sync/atomic/doc.gs.js +265 -0
- package/dist/gs/sync/atomic/doc.gs.js.map +1 -0
- package/dist/gs/sync/atomic/doc_64.gs.d.ts +15 -0
- package/dist/gs/sync/atomic/doc_64.gs.js +165 -0
- package/dist/gs/sync/atomic/doc_64.gs.js.map +1 -0
- package/dist/gs/sync/atomic/index.d.ts +4 -0
- package/dist/gs/sync/atomic/index.js +5 -0
- package/dist/gs/sync/atomic/index.js.map +1 -0
- package/dist/gs/sync/atomic/type.gs.d.ts +130 -0
- package/dist/gs/sync/atomic/type.gs.js +433 -0
- package/dist/gs/sync/atomic/type.gs.js.map +1 -0
- package/dist/gs/sync/atomic/value.gs.d.ts +19 -0
- package/dist/gs/sync/atomic/value.gs.js +116 -0
- package/dist/gs/sync/atomic/value.gs.js.map +1 -0
- package/dist/gs/unsafe/unsafe.d.ts +1 -0
- package/dist/gs/unsafe/unsafe.js +5 -0
- package/dist/gs/unsafe/unsafe.js.map +1 -1
- package/gs/builtin/builtin.ts +9 -7
- package/gs/builtin/map.ts +5 -1
- package/gs/builtin/slice.ts +152 -24
- package/gs/github.com/pkg/errors/errors.ts +307 -0
- package/gs/github.com/pkg/errors/go113.ts +39 -0
- package/gs/github.com/pkg/errors/index.ts +3 -0
- package/gs/github.com/pkg/errors/stack.ts +127 -0
- package/gs/maps/index.ts +2 -2
- package/gs/maps/iter.ts +67 -0
- package/gs/maps/maps.ts +89 -0
- package/gs/math/TODO.md +156 -0
- package/gs/math/abs.gs.test.ts +29 -0
- package/gs/math/abs.gs.ts +13 -0
- package/gs/math/acosh.gs.test.ts +39 -0
- package/gs/math/acosh.gs.ts +21 -0
- package/gs/math/asin.gs.test.ts +66 -0
- package/gs/math/asin.gs.ts +27 -0
- package/gs/math/asinh.gs.test.ts +37 -0
- package/gs/math/asinh.gs.ts +21 -0
- package/gs/math/atan.gs.test.ts +49 -0
- package/gs/math/atan.gs.ts +27 -0
- package/gs/math/atan2.gs.test.ts +55 -0
- package/gs/math/atan2.gs.ts +37 -0
- package/gs/math/atanh.gs.test.ts +47 -0
- package/gs/math/atanh.gs.ts +21 -0
- package/gs/math/bits.gs.test.ts +88 -0
- package/gs/math/bits.gs.ts +61 -0
- package/gs/math/cbrt.gs.test.ts +57 -0
- package/gs/math/cbrt.gs.ts +20 -0
- package/gs/math/const.gs.test.ts +54 -0
- package/gs/math/const.gs.ts +93 -0
- package/gs/math/copysign.gs.test.ts +44 -0
- package/gs/math/copysign.gs.ts +27 -0
- package/gs/math/dim.gs.test.ts +102 -0
- package/gs/math/dim.gs.ts +84 -0
- package/gs/math/erf.gs.test.ts +92 -0
- package/gs/math/erf.gs.ts +409 -0
- package/gs/math/erfinv.gs.test.ts +104 -0
- package/gs/math/erfinv.gs.ts +169 -0
- package/gs/math/exp.gs.test.ts +82 -0
- package/gs/math/exp.gs.ts +39 -0
- package/gs/math/expm1.gs.test.ts +48 -0
- package/gs/math/expm1.gs.ts +23 -0
- package/gs/math/floor.gs.test.ts +146 -0
- package/gs/math/floor.gs.ts +88 -0
- package/gs/math/fma.gs.test.ts +83 -0
- package/gs/math/fma.gs.ts +7 -0
- package/gs/math/frexp.gs.test.ts +146 -0
- package/gs/math/frexp.gs.ts +37 -0
- package/gs/math/gamma.gs.test.ts +66 -0
- package/gs/math/gamma.gs.ts +158 -0
- package/gs/math/hypot.gs.test.ts +73 -0
- package/gs/math/hypot.gs.ts +23 -0
- package/gs/math/index.ts +44 -0
- package/gs/math/j0.gs.test.ts +74 -0
- package/gs/math/j0.gs.ts +257 -0
- package/gs/math/j1.gs.test.ts +81 -0
- package/gs/math/j1.gs.ts +231 -0
- package/gs/math/jn.gs.test.ts +133 -0
- package/gs/math/jn.gs.ts +447 -0
- package/gs/math/ldexp.gs.test.ts +128 -0
- package/gs/math/ldexp.gs.ts +28 -0
- package/gs/math/lgamma.gs.test.ts +102 -0
- package/gs/math/lgamma.gs.ts +251 -0
- package/gs/math/log.gs.test.ts +40 -0
- package/gs/math/log.gs.ts +21 -0
- package/gs/math/log10.gs.test.ts +80 -0
- package/gs/math/log10.gs.ts +25 -0
- package/gs/math/log1p.gs.test.ts +55 -0
- package/gs/math/log1p.gs.ts +24 -0
- package/gs/math/logb.gs.test.ts +87 -0
- package/gs/math/logb.gs.ts +54 -0
- package/gs/math/mod.gs.test.ts +64 -0
- package/gs/math/mod.gs.ts +36 -0
- package/gs/math/modf.gs.test.ts +80 -0
- package/gs/math/modf.gs.ts +32 -0
- package/gs/math/nextafter.gs.test.ts +107 -0
- package/gs/math/nextafter.gs.ts +71 -0
- package/gs/math/pow.gs.test.ts +103 -0
- package/gs/math/pow.gs.ts +55 -0
- package/gs/math/pow10.gs.test.ts +58 -0
- package/gs/math/pow10.gs.ts +19 -0
- package/gs/math/remainder.gs.test.ts +70 -0
- package/gs/math/remainder.gs.ts +33 -0
- package/gs/math/signbit.gs.test.ts +33 -0
- package/gs/math/signbit.gs.ts +8 -0
- package/gs/math/sin.gs.test.ts +83 -0
- package/gs/math/sin.gs.ts +38 -0
- package/gs/math/sincos.gs.test.ts +91 -0
- package/gs/math/sincos.gs.ts +15 -0
- package/gs/math/sinh.gs.test.ts +66 -0
- package/gs/math/sinh.gs.ts +34 -0
- package/gs/math/sqrt.gs.test.ts +49 -0
- package/gs/math/sqrt.gs.ts +20 -0
- package/gs/math/tan.gs.test.ts +50 -0
- package/gs/math/tan.gs.ts +23 -0
- package/gs/math/tanh.gs.test.ts +52 -0
- package/gs/math/tanh.gs.ts +23 -0
- package/gs/math/trig_reduce.gs.ts +66 -0
- package/gs/math/unsafe.gs.ts +52 -0
- package/gs/strconv/atob.gs.ts +45 -0
- package/gs/strconv/atof.gs.ts +60 -0
- package/gs/strconv/atoi.gs.ts +243 -0
- package/gs/strconv/doc.gs.ts +2 -0
- package/gs/strconv/ftoa.gs.ts +66 -0
- package/gs/strconv/index.ts +6 -0
- package/gs/strconv/itoa.gs.ts +41 -0
- package/gs/strconv/quote.gs.ts +245 -0
- package/gs/strings/index.ts +4 -0
- package/gs/strings/replace.ts +9 -237
- package/gs/strings/search.ts +0 -28
- package/gs/sync/atomic/doc.gs.ts +276 -0
- package/gs/sync/atomic/doc_64.gs.ts +168 -0
- package/gs/sync/atomic/index.ts +4 -0
- package/gs/sync/atomic/type.gs.ts +596 -0
- package/gs/sync/atomic/value.gs.ts +158 -0
- package/gs/unsafe/unsafe.ts +6 -0
- package/package.json +1 -1
- package/gs/maps/iter.gs.ts +0 -71
- package/gs/maps/maps.gs.ts +0 -87
- package/gs/stringslite/godoc.txt +0 -17
- package/gs/stringslite/index.ts +0 -1
- package/gs/stringslite/strings.ts +0 -82
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
import * as $ from "@goscript/builtin/builtin.js";
|
|
2
|
+
import { ErrSyntax } from "./atoi.gs.js";
|
|
3
|
+
|
|
4
|
+
// Quote returns a double-quoted Go string literal representing s.
|
|
5
|
+
// The returned string uses Go escape sequences (\t, \n, \xFF, \u0100) for control characters and non-printable characters.
|
|
6
|
+
export function Quote(s: string): string {
|
|
7
|
+
return JSON.stringify(s);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
// QuoteToASCII returns a double-quoted Go string literal representing s.
|
|
11
|
+
// The returned string uses Go escape sequences (\t, \n, \xFF, \u0100) for control characters and non-ASCII characters.
|
|
12
|
+
export function QuoteToASCII(s: string): string {
|
|
13
|
+
// For simplicity, use JSON.stringify and then escape non-ASCII
|
|
14
|
+
const quoted = JSON.stringify(s);
|
|
15
|
+
return quoted.replace(/[\u0080-\uFFFF]/g, (match) => {
|
|
16
|
+
const code = match.charCodeAt(0);
|
|
17
|
+
if (code <= 0xFF) {
|
|
18
|
+
return '\\x' + code.toString(16).padStart(2, '0');
|
|
19
|
+
} else {
|
|
20
|
+
return '\\u' + code.toString(16).padStart(4, '0');
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// QuoteToGraphic returns a double-quoted Go string literal representing s.
|
|
26
|
+
// The returned string leaves Unicode graphic characters unchanged.
|
|
27
|
+
export function QuoteToGraphic(s: string): string {
|
|
28
|
+
return Quote(s); // Simplified
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// QuoteRune returns a single-quoted Go character literal representing the rune.
|
|
32
|
+
export function QuoteRune(r: number): string {
|
|
33
|
+
const char = String.fromCharCode(r);
|
|
34
|
+
if (r === 39) { // single quote
|
|
35
|
+
return "'\\'";
|
|
36
|
+
}
|
|
37
|
+
if (r === 92) { // backslash
|
|
38
|
+
return "'\\\\'";
|
|
39
|
+
}
|
|
40
|
+
if (r >= 32 && r <= 126) { // printable ASCII
|
|
41
|
+
return "'" + char + "'";
|
|
42
|
+
}
|
|
43
|
+
// Use escape sequences for non-printable
|
|
44
|
+
if (r <= 0xFF) {
|
|
45
|
+
return "'\\x" + r.toString(16).padStart(2, '0') + "'";
|
|
46
|
+
}
|
|
47
|
+
return "'\\u" + r.toString(16).padStart(4, '0') + "'";
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// QuoteRuneToASCII returns a single-quoted Go character literal representing the rune.
|
|
51
|
+
export function QuoteRuneToASCII(r: number): string {
|
|
52
|
+
return QuoteRune(r); // Same as QuoteRune for simplicity
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// QuoteRuneToGraphic returns a single-quoted Go character literal representing the rune.
|
|
56
|
+
export function QuoteRuneToGraphic(r: number): string {
|
|
57
|
+
return QuoteRune(r); // Same as QuoteRune for simplicity
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// CanBackquote reports whether the string s can be represented unchanged as a single-line backquoted string.
|
|
61
|
+
export function CanBackquote(s: string): boolean {
|
|
62
|
+
// Check if string contains backticks or control characters
|
|
63
|
+
for (let i = 0; i < s.length; i++) {
|
|
64
|
+
const c = s.charCodeAt(i);
|
|
65
|
+
if (c === 96 || c < 32 || c === 127) { // backtick or control character
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return true;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// Unquote interprets s as a single-quoted, double-quoted, or backquoted Go string literal.
|
|
73
|
+
export function Unquote(s: string): [string, $.GoError] {
|
|
74
|
+
const n = s.length;
|
|
75
|
+
if (n < 2) {
|
|
76
|
+
return ["", ErrSyntax];
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
const quote = s[0];
|
|
80
|
+
if (quote !== s[n-1]) {
|
|
81
|
+
return ["", ErrSyntax];
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
s = s.slice(1, n-1);
|
|
85
|
+
|
|
86
|
+
if (quote === '`') {
|
|
87
|
+
// Backquoted string - no escapes processed
|
|
88
|
+
if (s.includes('`')) {
|
|
89
|
+
return ["", ErrSyntax];
|
|
90
|
+
}
|
|
91
|
+
if (s.includes('\r')) {
|
|
92
|
+
return ["", ErrSyntax];
|
|
93
|
+
}
|
|
94
|
+
return [s, null];
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
if (quote !== '"' && quote !== "'") {
|
|
98
|
+
return ["", ErrSyntax];
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// Use JSON.parse for double-quoted strings as a starting point
|
|
102
|
+
if (quote === '"') {
|
|
103
|
+
try {
|
|
104
|
+
const result = JSON.parse('"' + s + '"');
|
|
105
|
+
return [result, null];
|
|
106
|
+
} catch {
|
|
107
|
+
return ["", ErrSyntax];
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
// Single-quoted string - should contain single rune
|
|
112
|
+
if (quote === "'") {
|
|
113
|
+
// Simplified: just handle basic cases
|
|
114
|
+
if (s.length === 1) {
|
|
115
|
+
return [s, null];
|
|
116
|
+
}
|
|
117
|
+
if (s.length === 2 && s[0] === '\\') {
|
|
118
|
+
switch (s[1]) {
|
|
119
|
+
case 'n': return ['\n', null];
|
|
120
|
+
case 't': return ['\t', null];
|
|
121
|
+
case 'r': return ['\r', null];
|
|
122
|
+
case '\\': return ['\\', null];
|
|
123
|
+
case "'": return ["'", null];
|
|
124
|
+
default: return ["", ErrSyntax];
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
return ["", ErrSyntax];
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
return ["", ErrSyntax];
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// UnquoteChar decodes the first character or byte in the escaped string or character literal represented by the string s.
|
|
134
|
+
export function UnquoteChar(s: string, quote: number): [number, boolean, string, $.GoError] {
|
|
135
|
+
// Simplified implementation
|
|
136
|
+
if (s.length === 0) {
|
|
137
|
+
return [0, false, "", ErrSyntax];
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
const c = s.charCodeAt(0);
|
|
141
|
+
if (c === quote) {
|
|
142
|
+
return [0, false, "", ErrSyntax];
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
if (c !== 92) { // not backslash
|
|
146
|
+
return [c, c >= 128, s.slice(1), null];
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
// Handle escape sequence - simplified
|
|
150
|
+
if (s.length < 2) {
|
|
151
|
+
return [0, false, "", ErrSyntax];
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
switch (s[1]) {
|
|
155
|
+
case 'n': return [10, false, s.slice(2), null]; // \n
|
|
156
|
+
case 't': return [9, false, s.slice(2), null]; // \t
|
|
157
|
+
case 'r': return [13, false, s.slice(2), null]; // \r
|
|
158
|
+
case '\\': return [92, false, s.slice(2), null]; // \\
|
|
159
|
+
case '"': return [34, false, s.slice(2), null]; // \"
|
|
160
|
+
case "'": return [39, false, s.slice(2), null]; // \'
|
|
161
|
+
default: return [0, false, "", ErrSyntax];
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
// QuotedPrefix returns the quoted string (as understood by Unquote) at the prefix of s.
|
|
166
|
+
export function QuotedPrefix(s: string): [string, $.GoError] {
|
|
167
|
+
if (s.length === 0) {
|
|
168
|
+
return ["", ErrSyntax];
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
const quote = s[0];
|
|
172
|
+
if (quote !== '"' && quote !== "'" && quote !== '`') {
|
|
173
|
+
return ["", ErrSyntax];
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
// Find matching quote
|
|
177
|
+
for (let i = 1; i < s.length; i++) {
|
|
178
|
+
if (s[i] === quote) {
|
|
179
|
+
if (quote === '`') {
|
|
180
|
+
return [s.slice(0, i+1), null];
|
|
181
|
+
}
|
|
182
|
+
// For " and ', need to handle escapes
|
|
183
|
+
let escaped = false;
|
|
184
|
+
for (let j = 1; j < i; j++) {
|
|
185
|
+
if (s[j] === '\\' && !escaped) {
|
|
186
|
+
escaped = true;
|
|
187
|
+
} else {
|
|
188
|
+
escaped = false;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
if (!escaped || s[i-1] !== '\\') {
|
|
192
|
+
return [s.slice(0, i+1), null];
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
return ["", ErrSyntax];
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
// AppendQuote appends a double-quoted Go string literal representing s to dst and returns the extended buffer.
|
|
201
|
+
export function AppendQuote(dst: $.Bytes, s: string): $.Bytes {
|
|
202
|
+
const quoted = Quote(s);
|
|
203
|
+
return $.append(dst, ...$.stringToBytes(quoted)!);
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
// AppendQuoteToASCII appends a double-quoted Go string literal representing s to dst and returns the extended buffer.
|
|
207
|
+
export function AppendQuoteToASCII(dst: $.Bytes, s: string): $.Bytes {
|
|
208
|
+
const quoted = QuoteToASCII(s);
|
|
209
|
+
return $.append(dst, ...$.stringToBytes(quoted)!);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
// AppendQuoteToGraphic appends a double-quoted Go string literal representing s to dst and returns the extended buffer.
|
|
213
|
+
export function AppendQuoteToGraphic(dst: $.Bytes, s: string): $.Bytes {
|
|
214
|
+
const quoted = QuoteToGraphic(s);
|
|
215
|
+
return $.append(dst, ...$.stringToBytes(quoted)!);
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
// AppendQuoteRune appends a single-quoted Go character literal representing the rune to dst and returns the extended buffer.
|
|
219
|
+
export function AppendQuoteRune(dst: $.Bytes, r: number): $.Bytes {
|
|
220
|
+
const quoted = QuoteRune(r);
|
|
221
|
+
return $.append(dst, ...$.stringToBytes(quoted)!);
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
// AppendQuoteRuneToASCII appends a single-quoted Go character literal representing the rune to dst and returns the extended buffer.
|
|
225
|
+
export function AppendQuoteRuneToASCII(dst: $.Bytes, r: number): $.Bytes {
|
|
226
|
+
const quoted = QuoteRuneToASCII(r);
|
|
227
|
+
return $.append(dst, ...$.stringToBytes(quoted)!);
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
// AppendQuoteRuneToGraphic appends a single-quoted Go character literal representing the rune to dst and returns the extended buffer.
|
|
231
|
+
export function AppendQuoteRuneToGraphic(dst: $.Bytes, r: number): $.Bytes {
|
|
232
|
+
const quoted = QuoteRuneToGraphic(r);
|
|
233
|
+
return $.append(dst, ...$.stringToBytes(quoted)!);
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
// IsPrint reports whether the rune is defined as printable by Go.
|
|
237
|
+
export function IsPrint(r: number): boolean {
|
|
238
|
+
// Simplified: consider ASCII printable characters
|
|
239
|
+
return r >= 32 && r <= 126;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
// IsGraphic reports whether the rune is defined as a Graphic by Unicode.
|
|
243
|
+
export function IsGraphic(r: number): boolean {
|
|
244
|
+
return IsPrint(r); // Simplified
|
|
245
|
+
}
|
package/gs/strings/index.ts
CHANGED
|
@@ -1,2 +1,6 @@
|
|
|
1
1
|
export * from './builder.js'
|
|
2
2
|
export * from './strings.js'
|
|
3
|
+
export * from './reader.js'
|
|
4
|
+
export { Replacer, NewReplacer } from './replace.js'
|
|
5
|
+
export { Lines, FieldsSeq, FieldsFuncSeq, SplitSeq, SplitAfterSeq } from './iter.js'
|
|
6
|
+
// Clone and Compare are already exported from strings.js, so we don't re-export them
|
package/gs/strings/replace.ts
CHANGED
|
@@ -435,40 +435,7 @@ class trieNode {
|
|
|
435
435
|
}
|
|
436
436
|
}
|
|
437
437
|
|
|
438
|
-
|
|
439
|
-
static __typeInfo = $.registerStructType(
|
|
440
|
-
'trieNode',
|
|
441
|
-
new trieNode(),
|
|
442
|
-
[
|
|
443
|
-
{
|
|
444
|
-
name: 'add',
|
|
445
|
-
args: [
|
|
446
|
-
{ name: 'key', type: { kind: $.TypeKind.Basic, name: 'string' } },
|
|
447
|
-
{ name: 'val', type: { kind: $.TypeKind.Basic, name: 'string' } },
|
|
448
|
-
{
|
|
449
|
-
name: 'priority',
|
|
450
|
-
type: { kind: $.TypeKind.Basic, name: 'number' },
|
|
451
|
-
},
|
|
452
|
-
{
|
|
453
|
-
name: 'r',
|
|
454
|
-
type: { kind: $.TypeKind.Pointer, elemType: 'genericReplacer' },
|
|
455
|
-
},
|
|
456
|
-
],
|
|
457
|
-
returns: [],
|
|
458
|
-
},
|
|
459
|
-
],
|
|
460
|
-
trieNode,
|
|
461
|
-
{
|
|
462
|
-
value: { kind: $.TypeKind.Basic, name: 'string' },
|
|
463
|
-
priority: { kind: $.TypeKind.Basic, name: 'number' },
|
|
464
|
-
prefix: { kind: $.TypeKind.Basic, name: 'string' },
|
|
465
|
-
next: { kind: $.TypeKind.Pointer, elemType: 'trieNode' },
|
|
466
|
-
table: {
|
|
467
|
-
kind: $.TypeKind.Slice,
|
|
468
|
-
elemType: { kind: $.TypeKind.Pointer, elemType: 'trieNode' },
|
|
469
|
-
},
|
|
470
|
-
},
|
|
471
|
-
)
|
|
438
|
+
|
|
472
439
|
}
|
|
473
440
|
|
|
474
441
|
class genericReplacer {
|
|
@@ -656,72 +623,9 @@ class genericReplacer {
|
|
|
656
623
|
}
|
|
657
624
|
return [n, err]
|
|
658
625
|
}
|
|
659
|
-
|
|
660
|
-
// Register this type with the runtime type system
|
|
661
|
-
static __typeInfo = $.registerStructType(
|
|
662
|
-
'genericReplacer',
|
|
663
|
-
new genericReplacer(),
|
|
664
|
-
[
|
|
665
|
-
{
|
|
666
|
-
name: 'lookup',
|
|
667
|
-
args: [
|
|
668
|
-
{ name: 's', type: { kind: $.TypeKind.Basic, name: 'string' } },
|
|
669
|
-
{
|
|
670
|
-
name: 'ignoreRoot',
|
|
671
|
-
type: { kind: $.TypeKind.Basic, name: 'boolean' },
|
|
672
|
-
},
|
|
673
|
-
],
|
|
674
|
-
returns: [
|
|
675
|
-
{ type: { kind: $.TypeKind.Basic, name: 'string' } },
|
|
676
|
-
{ type: { kind: $.TypeKind.Basic, name: 'number' } },
|
|
677
|
-
{ type: { kind: $.TypeKind.Basic, name: 'boolean' } },
|
|
678
|
-
],
|
|
679
|
-
},
|
|
680
|
-
{
|
|
681
|
-
name: 'Replace',
|
|
682
|
-
args: [{ name: 's', type: { kind: $.TypeKind.Basic, name: 'string' } }],
|
|
683
|
-
returns: [{ type: { kind: $.TypeKind.Basic, name: 'string' } }],
|
|
684
|
-
},
|
|
685
|
-
{
|
|
686
|
-
name: 'WriteString',
|
|
687
|
-
args: [
|
|
688
|
-
{ name: 'w', type: 'Writer' },
|
|
689
|
-
{ name: 's', type: { kind: $.TypeKind.Basic, name: 'string' } },
|
|
690
|
-
],
|
|
691
|
-
returns: [
|
|
692
|
-
{ type: { kind: $.TypeKind.Basic, name: 'number' } },
|
|
693
|
-
{
|
|
694
|
-
type: {
|
|
695
|
-
kind: $.TypeKind.Interface,
|
|
696
|
-
name: 'GoError',
|
|
697
|
-
methods: [
|
|
698
|
-
{
|
|
699
|
-
name: 'Error',
|
|
700
|
-
args: [],
|
|
701
|
-
returns: [
|
|
702
|
-
{ type: { kind: $.TypeKind.Basic, name: 'string' } },
|
|
703
|
-
],
|
|
704
|
-
},
|
|
705
|
-
],
|
|
706
|
-
},
|
|
707
|
-
},
|
|
708
|
-
],
|
|
709
|
-
},
|
|
710
|
-
],
|
|
711
|
-
genericReplacer,
|
|
712
|
-
{
|
|
713
|
-
root: 'trieNode',
|
|
714
|
-
tableSize: { kind: $.TypeKind.Basic, name: 'number' },
|
|
715
|
-
mapping: {
|
|
716
|
-
kind: $.TypeKind.Array,
|
|
717
|
-
length: 256,
|
|
718
|
-
elemType: { kind: $.TypeKind.Basic, name: 'number' },
|
|
719
|
-
},
|
|
720
|
-
},
|
|
721
|
-
)
|
|
722
626
|
}
|
|
723
627
|
|
|
724
|
-
|
|
628
|
+
function makeGenericReplacer(
|
|
725
629
|
oldnew: $.Slice<string>,
|
|
726
630
|
): genericReplacer | null {
|
|
727
631
|
let r = new genericReplacer()
|
|
@@ -773,65 +677,25 @@ class stringWriter {
|
|
|
773
677
|
w: $.VarRef<io.Writer>
|
|
774
678
|
}
|
|
775
679
|
|
|
776
|
-
constructor(
|
|
680
|
+
constructor(w: io.Writer) {
|
|
777
681
|
this._fields = {
|
|
778
|
-
w: $.varRef(
|
|
682
|
+
w: $.varRef(w),
|
|
779
683
|
}
|
|
780
684
|
}
|
|
781
685
|
|
|
782
|
-
public clone(): stringWriter {
|
|
783
|
-
const cloned = new stringWriter()
|
|
784
|
-
cloned._fields = {
|
|
785
|
-
w: $.varRef(this._fields.w.value),
|
|
786
|
-
}
|
|
787
|
-
return cloned
|
|
788
|
-
}
|
|
789
|
-
|
|
790
686
|
public WriteString(s: string): [number, $.GoError] {
|
|
791
687
|
const w = this
|
|
792
688
|
return w.w!.Write($.stringToBytes(s))
|
|
793
689
|
}
|
|
794
|
-
|
|
795
|
-
// Register this type with the runtime type system
|
|
796
|
-
static __typeInfo = $.registerStructType(
|
|
797
|
-
'stringWriter',
|
|
798
|
-
new stringWriter(),
|
|
799
|
-
[
|
|
800
|
-
{
|
|
801
|
-
name: 'WriteString',
|
|
802
|
-
args: [{ name: 's', type: { kind: $.TypeKind.Basic, name: 'string' } }],
|
|
803
|
-
returns: [
|
|
804
|
-
{ type: { kind: $.TypeKind.Basic, name: 'number' } },
|
|
805
|
-
{
|
|
806
|
-
type: {
|
|
807
|
-
kind: $.TypeKind.Interface,
|
|
808
|
-
name: 'GoError',
|
|
809
|
-
methods: [
|
|
810
|
-
{
|
|
811
|
-
name: 'Error',
|
|
812
|
-
args: [],
|
|
813
|
-
returns: [
|
|
814
|
-
{ type: { kind: $.TypeKind.Basic, name: 'string' } },
|
|
815
|
-
],
|
|
816
|
-
},
|
|
817
|
-
],
|
|
818
|
-
},
|
|
819
|
-
},
|
|
820
|
-
],
|
|
821
|
-
},
|
|
822
|
-
],
|
|
823
|
-
stringWriter,
|
|
824
|
-
{ w: 'Writer' },
|
|
825
|
-
)
|
|
826
690
|
}
|
|
827
691
|
|
|
828
|
-
|
|
692
|
+
function getStringWriter(w: io.Writer): io.StringWriter {
|
|
829
693
|
let { value: sw, ok: ok } = $.typeAssert<io.StringWriter>(
|
|
830
694
|
w,
|
|
831
695
|
'io.StringWriter',
|
|
832
696
|
)
|
|
833
697
|
if (!ok) {
|
|
834
|
-
sw = new stringWriter(
|
|
698
|
+
sw = new stringWriter(w)
|
|
835
699
|
}
|
|
836
700
|
return sw
|
|
837
701
|
}
|
|
@@ -926,51 +790,10 @@ class singleStringReplacer {
|
|
|
926
790
|
return [n, err]
|
|
927
791
|
}
|
|
928
792
|
|
|
929
|
-
|
|
930
|
-
static __typeInfo = $.registerStructType(
|
|
931
|
-
'singleStringReplacer',
|
|
932
|
-
new singleStringReplacer(),
|
|
933
|
-
[
|
|
934
|
-
{
|
|
935
|
-
name: 'Replace',
|
|
936
|
-
args: [{ name: 's', type: { kind: $.TypeKind.Basic, name: 'string' } }],
|
|
937
|
-
returns: [{ type: { kind: $.TypeKind.Basic, name: 'string' } }],
|
|
938
|
-
},
|
|
939
|
-
{
|
|
940
|
-
name: 'WriteString',
|
|
941
|
-
args: [
|
|
942
|
-
{ name: 'w', type: 'Writer' },
|
|
943
|
-
{ name: 's', type: { kind: $.TypeKind.Basic, name: 'string' } },
|
|
944
|
-
],
|
|
945
|
-
returns: [
|
|
946
|
-
{ type: { kind: $.TypeKind.Basic, name: 'number' } },
|
|
947
|
-
{
|
|
948
|
-
type: {
|
|
949
|
-
kind: $.TypeKind.Interface,
|
|
950
|
-
name: 'GoError',
|
|
951
|
-
methods: [
|
|
952
|
-
{
|
|
953
|
-
name: 'Error',
|
|
954
|
-
args: [],
|
|
955
|
-
returns: [
|
|
956
|
-
{ type: { kind: $.TypeKind.Basic, name: 'string' } },
|
|
957
|
-
],
|
|
958
|
-
},
|
|
959
|
-
],
|
|
960
|
-
},
|
|
961
|
-
},
|
|
962
|
-
],
|
|
963
|
-
},
|
|
964
|
-
],
|
|
965
|
-
singleStringReplacer,
|
|
966
|
-
{
|
|
967
|
-
finder: { kind: $.TypeKind.Pointer, elemType: 'stringFinder' },
|
|
968
|
-
value: { kind: $.TypeKind.Basic, name: 'string' },
|
|
969
|
-
},
|
|
970
|
-
)
|
|
793
|
+
|
|
971
794
|
}
|
|
972
795
|
|
|
973
|
-
|
|
796
|
+
function makeSingleStringReplacer(
|
|
974
797
|
pattern: string,
|
|
975
798
|
value: string,
|
|
976
799
|
): singleStringReplacer | null {
|
|
@@ -1243,58 +1066,7 @@ class byteStringReplacer {
|
|
|
1243
1066
|
return [n, err]
|
|
1244
1067
|
}
|
|
1245
1068
|
|
|
1246
|
-
|
|
1247
|
-
static __typeInfo = $.registerStructType(
|
|
1248
|
-
'byteStringReplacer',
|
|
1249
|
-
new byteStringReplacer(),
|
|
1250
|
-
[
|
|
1251
|
-
{
|
|
1252
|
-
name: 'Replace',
|
|
1253
|
-
args: [{ name: 's', type: { kind: $.TypeKind.Basic, name: 'string' } }],
|
|
1254
|
-
returns: [{ type: { kind: $.TypeKind.Basic, name: 'string' } }],
|
|
1255
|
-
},
|
|
1256
|
-
{
|
|
1257
|
-
name: 'WriteString',
|
|
1258
|
-
args: [
|
|
1259
|
-
{ name: 'w', type: 'Writer' },
|
|
1260
|
-
{ name: 's', type: { kind: $.TypeKind.Basic, name: 'string' } },
|
|
1261
|
-
],
|
|
1262
|
-
returns: [
|
|
1263
|
-
{ type: { kind: $.TypeKind.Basic, name: 'number' } },
|
|
1264
|
-
{
|
|
1265
|
-
type: {
|
|
1266
|
-
kind: $.TypeKind.Interface,
|
|
1267
|
-
name: 'GoError',
|
|
1268
|
-
methods: [
|
|
1269
|
-
{
|
|
1270
|
-
name: 'Error',
|
|
1271
|
-
args: [],
|
|
1272
|
-
returns: [
|
|
1273
|
-
{ type: { kind: $.TypeKind.Basic, name: 'string' } },
|
|
1274
|
-
],
|
|
1275
|
-
},
|
|
1276
|
-
],
|
|
1277
|
-
},
|
|
1278
|
-
},
|
|
1279
|
-
],
|
|
1280
|
-
},
|
|
1281
|
-
],
|
|
1282
|
-
byteStringReplacer,
|
|
1283
|
-
{
|
|
1284
|
-
replacements: {
|
|
1285
|
-
kind: $.TypeKind.Array,
|
|
1286
|
-
length: 256,
|
|
1287
|
-
elemType: {
|
|
1288
|
-
kind: $.TypeKind.Slice,
|
|
1289
|
-
elemType: { kind: $.TypeKind.Basic, name: 'number' },
|
|
1290
|
-
},
|
|
1291
|
-
},
|
|
1292
|
-
toReplace: {
|
|
1293
|
-
kind: $.TypeKind.Slice,
|
|
1294
|
-
elemType: { kind: $.TypeKind.Basic, name: 'string' },
|
|
1295
|
-
},
|
|
1296
|
-
},
|
|
1297
|
-
)
|
|
1069
|
+
|
|
1298
1070
|
}
|
|
1299
1071
|
|
|
1300
1072
|
// Helper function to copy bytes
|
package/gs/strings/search.ts
CHANGED
|
@@ -111,34 +111,6 @@ export class stringFinder {
|
|
|
111
111
|
}
|
|
112
112
|
return -1
|
|
113
113
|
}
|
|
114
|
-
|
|
115
|
-
// Register this type with the runtime type system
|
|
116
|
-
static __typeInfo = $.registerStructType(
|
|
117
|
-
'stringFinder',
|
|
118
|
-
new stringFinder(),
|
|
119
|
-
[
|
|
120
|
-
{
|
|
121
|
-
name: 'next',
|
|
122
|
-
args: [
|
|
123
|
-
{ name: 'text', type: { kind: $.TypeKind.Basic, name: 'string' } },
|
|
124
|
-
],
|
|
125
|
-
returns: [{ type: { kind: $.TypeKind.Basic, name: 'number' } }],
|
|
126
|
-
},
|
|
127
|
-
],
|
|
128
|
-
stringFinder,
|
|
129
|
-
{
|
|
130
|
-
pattern: { kind: $.TypeKind.Basic, name: 'string' },
|
|
131
|
-
badCharSkip: {
|
|
132
|
-
kind: $.TypeKind.Array,
|
|
133
|
-
length: 256,
|
|
134
|
-
elemType: { kind: $.TypeKind.Basic, name: 'number' },
|
|
135
|
-
},
|
|
136
|
-
goodSuffixSkip: {
|
|
137
|
-
kind: $.TypeKind.Slice,
|
|
138
|
-
elemType: { kind: $.TypeKind.Basic, name: 'number' },
|
|
139
|
-
},
|
|
140
|
-
},
|
|
141
|
-
)
|
|
142
114
|
}
|
|
143
115
|
|
|
144
116
|
export function makeStringFinder(pattern: string): stringFinder | null {
|