@thomasfosterau/effect-parse 0.0.0-stage → 0.1.0

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.
Files changed (133) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +550 -2
  3. package/dist/Ascii.d.ts +392 -0
  4. package/dist/Ascii.d.ts.map +1 -0
  5. package/dist/Ascii.js +610 -0
  6. package/dist/Ascii.js.map +1 -0
  7. package/dist/Binary.d.ts +153 -0
  8. package/dist/Binary.d.ts.map +1 -0
  9. package/dist/Binary.js +171 -0
  10. package/dist/Binary.js.map +1 -0
  11. package/dist/Bits.d.ts +60 -0
  12. package/dist/Bits.d.ts.map +1 -0
  13. package/dist/Bits.js +144 -0
  14. package/dist/Bits.js.map +1 -0
  15. package/dist/Encoding.d.ts +116 -0
  16. package/dist/Encoding.d.ts.map +1 -0
  17. package/dist/Encoding.js +85 -0
  18. package/dist/Encoding.js.map +1 -0
  19. package/dist/Expression.d.ts +124 -0
  20. package/dist/Expression.d.ts.map +1 -0
  21. package/dist/Expression.js +139 -0
  22. package/dist/Expression.js.map +1 -0
  23. package/dist/Input.d.ts +301 -0
  24. package/dist/Input.d.ts.map +1 -0
  25. package/dist/Input.js +312 -0
  26. package/dist/Input.js.map +1 -0
  27. package/dist/Nom.d.ts +518 -0
  28. package/dist/Nom.d.ts.map +1 -0
  29. package/dist/Nom.js +519 -0
  30. package/dist/Nom.js.map +1 -0
  31. package/dist/ParseError.d.ts +120 -0
  32. package/dist/ParseError.d.ts.map +1 -0
  33. package/dist/ParseError.js +301 -0
  34. package/dist/ParseError.js.map +1 -0
  35. package/dist/Parser.d.ts +1312 -0
  36. package/dist/Parser.d.ts.map +1 -0
  37. package/dist/Parser.js +1936 -0
  38. package/dist/Parser.js.map +1 -0
  39. package/dist/ParserSchema.d.ts +31 -0
  40. package/dist/ParserSchema.d.ts.map +1 -0
  41. package/dist/ParserSchema.js +56 -0
  42. package/dist/ParserSchema.js.map +1 -0
  43. package/dist/ParserStream.d.ts +127 -0
  44. package/dist/ParserStream.d.ts.map +1 -0
  45. package/dist/ParserStream.js +270 -0
  46. package/dist/ParserStream.js.map +1 -0
  47. package/dist/Text.d.ts +330 -0
  48. package/dist/Text.d.ts.map +1 -0
  49. package/dist/Text.js +529 -0
  50. package/dist/Text.js.map +1 -0
  51. package/dist/Token.d.ts +225 -0
  52. package/dist/Token.d.ts.map +1 -0
  53. package/dist/Token.js +294 -0
  54. package/dist/Token.js.map +1 -0
  55. package/dist/index.d.ts +17 -0
  56. package/dist/index.d.ts.map +1 -0
  57. package/dist/index.js +17 -0
  58. package/dist/index.js.map +1 -0
  59. package/dist/internal/compiler/closure.d.ts +25 -0
  60. package/dist/internal/compiler/closure.d.ts.map +1 -0
  61. package/dist/internal/compiler/closure.js +1668 -0
  62. package/dist/internal/compiler/closure.js.map +1 -0
  63. package/dist/internal/compiler/entries.d.ts +19 -0
  64. package/dist/internal/compiler/entries.d.ts.map +1 -0
  65. package/dist/internal/compiler/entries.js +32 -0
  66. package/dist/internal/compiler/entries.js.map +1 -0
  67. package/dist/internal/compiler/first.d.ts +33 -0
  68. package/dist/internal/compiler/first.d.ts.map +1 -0
  69. package/dist/internal/compiler/first.js +235 -0
  70. package/dist/internal/compiler/first.js.map +1 -0
  71. package/dist/internal/compiler/jit.d.ts +20 -0
  72. package/dist/internal/compiler/jit.d.ts.map +1 -0
  73. package/dist/internal/compiler/jit.js +1030 -0
  74. package/dist/internal/compiler/jit.js.map +1 -0
  75. package/dist/internal/compiler/registry.d.ts +34 -0
  76. package/dist/internal/compiler/registry.d.ts.map +1 -0
  77. package/dist/internal/compiler/registry.js +46 -0
  78. package/dist/internal/compiler/registry.js.map +1 -0
  79. package/dist/internal/compiler/sets.d.ts +29 -0
  80. package/dist/internal/compiler/sets.d.ts.map +1 -0
  81. package/dist/internal/compiler/sets.js +85 -0
  82. package/dist/internal/compiler/sets.js.map +1 -0
  83. package/dist/internal/entries.d.ts +27 -0
  84. package/dist/internal/entries.d.ts.map +1 -0
  85. package/dist/internal/entries.js +42 -0
  86. package/dist/internal/entries.js.map +1 -0
  87. package/dist/internal/node.d.ts +251 -0
  88. package/dist/internal/node.d.ts.map +1 -0
  89. package/dist/internal/node.js +73 -0
  90. package/dist/internal/node.js.map +1 -0
  91. package/dist/internal/numbers.d.ts +41 -0
  92. package/dist/internal/numbers.d.ts.map +1 -0
  93. package/dist/internal/numbers.js +302 -0
  94. package/dist/internal/numbers.js.map +1 -0
  95. package/dist/internal/resume.d.ts +39 -0
  96. package/dist/internal/resume.d.ts.map +1 -0
  97. package/dist/internal/resume.js +37 -0
  98. package/dist/internal/resume.js.map +1 -0
  99. package/dist/internal/text.d.ts +72 -0
  100. package/dist/internal/text.d.ts.map +1 -0
  101. package/dist/internal/text.js +391 -0
  102. package/dist/internal/text.js.map +1 -0
  103. package/dist/internal/tokens.d.ts +93 -0
  104. package/dist/internal/tokens.d.ts.map +1 -0
  105. package/dist/internal/tokens.js +400 -0
  106. package/dist/internal/tokens.js.map +1 -0
  107. package/package.json +115 -3
  108. package/src/Ascii.ts +741 -0
  109. package/src/Binary.ts +228 -0
  110. package/src/Bits.ts +192 -0
  111. package/src/Encoding.ts +128 -0
  112. package/src/Expression.ts +245 -0
  113. package/src/Input.ts +429 -0
  114. package/src/Nom.ts +642 -0
  115. package/src/ParseError.ts +378 -0
  116. package/src/Parser.ts +2763 -0
  117. package/src/ParserSchema.ts +87 -0
  118. package/src/ParserStream.ts +390 -0
  119. package/src/Text.ts +757 -0
  120. package/src/Token.ts +416 -0
  121. package/src/index.ts +16 -0
  122. package/src/internal/compiler/closure.ts +1583 -0
  123. package/src/internal/compiler/entries.ts +36 -0
  124. package/src/internal/compiler/first.ts +252 -0
  125. package/src/internal/compiler/jit.ts +1091 -0
  126. package/src/internal/compiler/registry.ts +79 -0
  127. package/src/internal/compiler/sets.ts +100 -0
  128. package/src/internal/entries.ts +51 -0
  129. package/src/internal/node.ts +207 -0
  130. package/src/internal/numbers.ts +291 -0
  131. package/src/internal/resume.ts +55 -0
  132. package/src/internal/text.ts +411 -0
  133. package/src/internal/tokens.ts +409 -0
package/dist/Text.js ADDED
@@ -0,0 +1,529 @@
1
+ import * as Encodings from "./Encoding.js";
2
+ import { Fail } from "./Input.js";
3
+ import { escapedImpl, overflow, takeEscapedImpl, toFloat } from "./Ascii.js";
4
+ import { codePointPredicate, compile, indexOf, matchLiteral } from "./internal/tokens.js";
5
+ import { floatText as markFloatText } from "./internal/numbers.js";
6
+ import * as internal from "./internal/text.js";
7
+ import * as P from "./Parser.js";
8
+ const toCodePoint = (c) => typeof c === "number" ? c : c.codePointAt(0) ?? -1;
9
+ const makePredicate = (name, re) => {
10
+ // Results for the Basic Multilingual Plane are cached: a table lookup is
11
+ // much faster than a regular expression test.
12
+ let ascii;
13
+ let bmp;
14
+ return codePointPredicate(name, (c) => {
15
+ const x = toCodePoint(c);
16
+ if (x < 0)
17
+ return false;
18
+ let table;
19
+ if (x < 128)
20
+ table = ascii ??= new Uint8Array(128);
21
+ else if (x < 0x10000)
22
+ table = bmp ??= new Uint8Array(0x10000);
23
+ else
24
+ return re.test(String.fromCodePoint(x));
25
+ let v = table[x];
26
+ if (v === 0)
27
+ table[x] = v = re.test(String.fromCharCode(x)) ? 2 : 1;
28
+ return v === 2;
29
+ });
30
+ };
31
+ /**
32
+ * A predicate testing a Unicode property, using the syntax of regular
33
+ * expression property escapes (`\p{...}`): a general category (`"Lu"`,
34
+ * `"Letter"`), a binary property (`"Emoji"`, `"Dash"`) or a script
35
+ * (`"Script=Greek"`).
36
+ *
37
+ * @example
38
+ * ```ts
39
+ * import { Text } from "@thomasfosterau/effect-parse"
40
+ *
41
+ * const greek = Text.string.takeWhile(Text.property("Script=Greek"), { min: 1 })
42
+ * ```
43
+ *
44
+ * @since 0.1.0
45
+ * @category predicates
46
+ */
47
+ export const property = (name) => makePredicate(name, new RegExp(`^\\p{${name}}$`, "u"));
48
+ /**
49
+ * Letters and other alphabetic characters (the Unicode `Alphabetic`
50
+ * property, Rust's `char::is_alphabetic`).
51
+ *
52
+ * @since 0.1.0
53
+ * @category predicates
54
+ */
55
+ export const isAlphabetic = makePredicate("isAlphabetic", /^\p{Alphabetic}$/u);
56
+ /**
57
+ * Letters (general category `L`).
58
+ *
59
+ * @since 0.1.0
60
+ * @category predicates
61
+ */
62
+ export const isLetter = makePredicate("isLetter", /^\p{L}$/u);
63
+ /**
64
+ * Uppercase characters (the Unicode `Uppercase` property).
65
+ *
66
+ * @since 0.1.0
67
+ * @category predicates
68
+ */
69
+ export const isUppercase = makePredicate("isUppercase", /^\p{Uppercase}$/u);
70
+ /**
71
+ * Lowercase characters (the Unicode `Lowercase` property).
72
+ *
73
+ * @since 0.1.0
74
+ * @category predicates
75
+ */
76
+ export const isLowercase = makePredicate("isLowercase", /^\p{Lowercase}$/u);
77
+ /**
78
+ * Decimal digits of any script (general category `Nd`): `0`–`9`, `٠`–`٩`,
79
+ * `०`–`९`, ...
80
+ *
81
+ * @since 0.1.0
82
+ * @category predicates
83
+ */
84
+ export const isDecimalDigit = makePredicate("isDecimalDigit", /^\p{Nd}$/u);
85
+ /**
86
+ * Numeric characters (general category `N`), including `½` and `Ⅻ` (Rust's
87
+ * `char::is_numeric`).
88
+ *
89
+ * @since 0.1.0
90
+ * @category predicates
91
+ */
92
+ export const isNumeric = makePredicate("isNumeric", /^\p{N}$/u);
93
+ /**
94
+ * Alphabetic or numeric characters (Rust's `char::is_alphanumeric`).
95
+ *
96
+ * @since 0.1.0
97
+ * @category predicates
98
+ */
99
+ export const isAlphanumeric = makePredicate("isAlphanumeric", /^[\p{Alphabetic}\p{N}]$/u);
100
+ /**
101
+ * Whitespace, including line breaks (the Unicode `White_Space` property,
102
+ * Rust's `char::is_whitespace`).
103
+ *
104
+ * @since 0.1.0
105
+ * @category predicates
106
+ */
107
+ export const isWhitespace = makePredicate("isWhitespace", /^\p{White_Space}$/u);
108
+ /**
109
+ * Whitespace that does not break lines: `White_Space` except `\n`, `\v`,
110
+ * `\f`, `\r`, U+0085, U+2028 and U+2029. Includes tabs and no-break spaces.
111
+ *
112
+ * @since 0.1.0
113
+ * @category predicates
114
+ */
115
+ export const isSpace = makePredicate("isSpace", /^(?![\n\v\f\r\u0085\u2028\u2029])\p{White_Space}$/u);
116
+ /**
117
+ * Characters that can start an identifier (the Unicode `ID_Start` property,
118
+ * see UAX #31).
119
+ *
120
+ * @since 0.1.0
121
+ * @category predicates
122
+ */
123
+ export const isIdStart = makePredicate("isIdStart", /^\p{ID_Start}$/u);
124
+ /**
125
+ * Characters that can continue an identifier (the Unicode `ID_Continue`
126
+ * property, see UAX #31).
127
+ *
128
+ * @since 0.1.0
129
+ * @category predicates
130
+ */
131
+ export const isIdContinue = makePredicate("isIdContinue", /^\p{ID_Continue}$/u);
132
+ /**
133
+ * Punctuation (general category `P`).
134
+ *
135
+ * @since 0.1.0
136
+ * @category predicates
137
+ */
138
+ export const isPunctuation = makePredicate("isPunctuation", /^\p{P}$/u);
139
+ /**
140
+ * Control characters (general category `Cc`).
141
+ *
142
+ * @since 0.1.0
143
+ * @category predicates
144
+ */
145
+ export const isControl = makePredicate("isControl", /^\p{Cc}$/u);
146
+ const normalize = (r) => {
147
+ if (r === undefined)
148
+ return [0, Infinity];
149
+ if (typeof r === "number")
150
+ return [r, r];
151
+ return [r.min ?? 0, r.max ?? Infinity];
152
+ };
153
+ const isAsciiDigit = codePointPredicate("isAsciiDigit", (c) => c >= 48 && c <= 57, [[48, 57]]);
154
+ const isAsciiHexDigit = codePointPredicate("isAsciiHexDigit", (c) => (c >= 48 && c <= 57) || (c >= 65 && c <= 70) || (c >= 97 && c <= 102), [[48, 57], [65, 70], [97, 102]]);
155
+ const isLineBreak = (c) => c === 10 || c === 13;
156
+ const expectedAny = ["any character"];
157
+ const expectedLineEnding = ["line ending"];
158
+ const expectedIdentifier = ["identifier"];
159
+ /**
160
+ * Builds the text parsers for an encoding.
161
+ *
162
+ * @example
163
+ * ```ts
164
+ * import { Encoding, Parser, Text } from "@thomasfosterau/effect-parse"
165
+ *
166
+ * const T = Text.make(Encoding.latin1)
167
+ * Parser.parse(T.alpha1, new Uint8Array([0x63, 0x61, 0x66, 0xe9])) // "café"
168
+ * ```
169
+ *
170
+ * @since 0.1.0
171
+ * @category constructors
172
+ */
173
+ export const make = (encoding) => {
174
+ const enc = encoding;
175
+ const fast = internal.fastLimit(enc);
176
+ // Each parser records its encoding on byte input (`state.encoding`), so
177
+ // that errors can show the input as text.
178
+ const backtrack = (state, kind, expected, offset = state.pos) => state.backtrack(kind, expected, offset);
179
+ /** The text `[start, end)` after checking it is well formed, or `Fail`. */
180
+ const textOf = (state, start, end, kind, expected) => {
181
+ const count = internal.validate(enc, state, start, end);
182
+ if (count < 0)
183
+ return backtrack(state, kind, expected, -1 - count);
184
+ return enc.text(state.input, start, end);
185
+ };
186
+ const takeWhileText = (test, r, negate, name, expected, kind, hint, set = test) => {
187
+ const [min, max] = normalize(r);
188
+ return P.described((state) => {
189
+ if (state.inputKind === 1)
190
+ state.encoding = enc;
191
+ const start = state.pos;
192
+ internal.scan(enc, state, test, negate, max, state.pos, fast);
193
+ const offset = internal.scanOffset;
194
+ const count = internal.scanCount;
195
+ const stop = internal.scanStop;
196
+ if (state.partial && (stop === internal.End || stop === internal.Truncated))
197
+ return state.incomplete(1, expected);
198
+ if (count < min)
199
+ return backtrack(state, kind, expected, offset);
200
+ // More matching characters would have been accepted where we stopped
201
+ if (hint && count < max)
202
+ state.setHint(offset, expected);
203
+ state.pos = offset;
204
+ return enc.text(state.input, start, offset);
205
+ }, name, { _tag: "TakeWhile", set, negate, min, max, encoding: enc });
206
+ };
207
+ const any = P.described((state) => {
208
+ if (state.inputKind === 1)
209
+ state.encoding = enc;
210
+ const cp = internal.next(enc, state);
211
+ if (cp < 0)
212
+ return internal.failAt(state, cp, "Token", expectedAny);
213
+ state.pos += internal.width;
214
+ return internal.charOf(cp);
215
+ }, "any", { _tag: "Any", encoding: enc });
216
+ const literal = (lit) => {
217
+ const encoded = enc.encode(lit);
218
+ const len = encoded.length;
219
+ const expected = [JSON.stringify(lit)];
220
+ const node = { _tag: "Literal", literal: lit, caseless: false, encoding: enc };
221
+ if (len === 1) {
222
+ // Single unit literals (punctuation, mostly) are compared directly
223
+ const unit = typeof encoded === "string" ? encoded.charCodeAt(0) : encoded[0];
224
+ return P.described((state) => {
225
+ const pos = state.pos;
226
+ if (state.inputKind === 1)
227
+ state.encoding = enc;
228
+ if (pos >= state.end)
229
+ return state.eoi("Literal", expected, 1);
230
+ const input = state.input;
231
+ if ((state.inputKind === 0 ? input.charCodeAt(pos) : input[pos]) !== unit) {
232
+ return backtrack(state, "Literal", expected);
233
+ }
234
+ state.pos = pos + 1;
235
+ return lit;
236
+ }, expected[0], node);
237
+ }
238
+ return P.described((state) => {
239
+ if (state.inputKind === 1)
240
+ state.encoding = enc;
241
+ const r = matchLiteral(state, encoded, false);
242
+ if (r === -1)
243
+ return backtrack(state, "Literal", expected);
244
+ if (r === -2) {
245
+ if (state.partial)
246
+ return state.incomplete(len - (state.end - state.pos), expected);
247
+ return backtrack(state, "Literal", expected);
248
+ }
249
+ state.pos += len;
250
+ return lit;
251
+ }, expected[0], node);
252
+ };
253
+ const caseless = (lit) => {
254
+ const folded = Array.from(lit, (c) => internal.fold(c.codePointAt(0)));
255
+ const expected = [`${JSON.stringify(lit)} (case insensitive)`];
256
+ return P.described((state) => {
257
+ if (state.inputKind === 1)
258
+ state.encoding = enc;
259
+ const start = state.pos;
260
+ let pos = start;
261
+ for (let i = 0; i < folded.length; i++) {
262
+ const cp = internal.next(enc, state, pos);
263
+ if (cp === internal.End || cp === internal.Truncated) {
264
+ return state.partial ? state.incomplete(1, expected) : backtrack(state, "Literal", expected);
265
+ }
266
+ if (cp < 0 || internal.fold(cp) !== folded[i])
267
+ return backtrack(state, "Literal", expected);
268
+ pos += internal.width;
269
+ }
270
+ state.pos = pos;
271
+ return enc.text(state.input, start, pos);
272
+ }, expected[0], { _tag: "Literal", literal: lit, caseless: true, encoding: enc });
273
+ };
274
+ const oneOfImpl = (set, negate) => {
275
+ const m = compile(set, "string");
276
+ const test = m.code;
277
+ const expected = [negate ? `anything but ${m.description}` : m.description];
278
+ const kind = negate ? "NoneOf" : "OneOf";
279
+ return P.described((state) => {
280
+ if (state.inputKind === 1)
281
+ state.encoding = enc;
282
+ const cp = internal.next(enc, state);
283
+ if (cp < 0)
284
+ return internal.failAt(state, cp, kind, expected);
285
+ const w = internal.width;
286
+ if (test(cp) === negate)
287
+ return state.backtrack(kind, expected);
288
+ state.pos += w;
289
+ return internal.charOf(cp);
290
+ }, expected[0], { _tag: "OneOf", set, negate, encoding: enc });
291
+ };
292
+ const take = (count) => {
293
+ const expected = [count === 1 ? "1 character" : `${count} characters`];
294
+ return P.described((state) => {
295
+ if (state.inputKind === 1)
296
+ state.encoding = enc;
297
+ const start = state.pos;
298
+ let pos = start;
299
+ for (let got = 0; got < count; got++) {
300
+ const cp = internal.next(enc, state, pos);
301
+ if (cp === internal.End)
302
+ return state.eoi("Take", expected, count - got);
303
+ if (cp < 0)
304
+ return internal.failAt(state, cp, "Take", expected, pos);
305
+ pos += internal.width;
306
+ }
307
+ state.pos = pos;
308
+ return enc.text(state.input, start, pos);
309
+ }, "take", { _tag: "Take", count, encoding: enc });
310
+ };
311
+ const takeUntil = (lit, r) => {
312
+ const [min, max] = normalize(r);
313
+ const needle = enc.encode(lit);
314
+ const unit = enc.unit;
315
+ const expected = [JSON.stringify(lit)];
316
+ return P.described((state) => {
317
+ if (state.inputKind === 1)
318
+ state.encoding = enc;
319
+ const start = state.pos;
320
+ let idx = indexOf(state, needle, start);
321
+ // Multi-unit encodings: only accept matches on a character boundary
322
+ while (unit > 1 && idx >= 0 && (idx - start) % unit !== 0)
323
+ idx = indexOf(state, needle, idx + 1);
324
+ if (idx < 0) {
325
+ if (state.partial)
326
+ return state.incomplete(0, expected);
327
+ return backtrack(state, "TakeUntil", expected, state.end);
328
+ }
329
+ const count = internal.validate(enc, state, start, idx);
330
+ if (count < 0)
331
+ return backtrack(state, "TakeUntil", expected, -1 - count);
332
+ // As in winnow, the first occurrence must lie within the range
333
+ if (count < min)
334
+ return backtrack(state, "TakeUntil", expected, idx);
335
+ if (count > max)
336
+ return backtrack(state, "TakeUntil", expected);
337
+ state.pos = idx;
338
+ return enc.text(state.input, start, idx);
339
+ }, "takeUntil", { _tag: "TakeUntil", literal: lit, min, max, encoding: enc });
340
+ };
341
+ const always = () => true;
342
+ const rest = P.described((state) => {
343
+ if (state.inputKind === 1)
344
+ state.encoding = enc;
345
+ const start = state.pos;
346
+ internal.scan(enc, state, always, false, Infinity, state.pos, fast);
347
+ const offset = internal.scanOffset;
348
+ if (internal.scanStop === internal.Truncated)
349
+ return state.incomplete(1, expectedAny);
350
+ if (internal.scanStop === internal.Invalid)
351
+ return backtrack(state, "Token", expectedAny, offset);
352
+ state.pos = offset;
353
+ return enc.text(state.input, start, offset);
354
+ }, "rest", { _tag: "Rest", encoding: enc });
355
+ const taken = (self) => {
356
+ const step = self.step;
357
+ return P.described((state) => {
358
+ if (state.inputKind === 1)
359
+ state.encoding = enc;
360
+ const start = state.pos;
361
+ if (step(state) === Fail)
362
+ return Fail;
363
+ return textOf(state, start, state.pos, "Slice", expectedAny);
364
+ }, self.name, { _tag: "Taken", self, encoding: enc });
365
+ };
366
+ const cls = (test, min, description, kind, hint = true) => takeWhileText(test, { min }, false, `${kind.toLowerCase()}${min}`, [description], kind, hint);
367
+ const identifierStart = (cp) => cp === 95 || isIdStart(cp);
368
+ const identifier = P.described((state) => {
369
+ if (state.inputKind === 1)
370
+ state.encoding = enc;
371
+ const start = state.pos;
372
+ const cp = internal.next(enc, state);
373
+ if (cp < 0)
374
+ return internal.failAt(state, cp, "TakeWhile", expectedIdentifier);
375
+ if (!identifierStart(cp))
376
+ return state.backtrack("TakeWhile", expectedIdentifier);
377
+ internal.scan(enc, state, isIdContinue, false, Infinity, start + internal.width, fast);
378
+ const stop = internal.scanStop;
379
+ if (state.partial && (stop === internal.End || stop === internal.Truncated)) {
380
+ return state.incomplete(1, expectedIdentifier);
381
+ }
382
+ state.pos = internal.scanOffset;
383
+ return enc.text(state.input, start, state.pos);
384
+ }, "identifier", { _tag: "Identifier", encoding: enc });
385
+ // Decoded rather than matched as a literal, as not every encoding can encode it
386
+ const bom = P.described((state) => {
387
+ if (state.inputKind === 1)
388
+ state.encoding = enc;
389
+ const cp = internal.next(enc, state);
390
+ if (cp === 0xfeff) {
391
+ state.pos += internal.width;
392
+ return true;
393
+ }
394
+ if (cp === internal.Truncated || (cp === internal.End && state.partial)) {
395
+ return state.incomplete(1, ["byte order mark"]);
396
+ }
397
+ return false;
398
+ }, "bom", { _tag: "Bom", encoding: enc });
399
+ const newline = literal("\n");
400
+ const crlf = literal("\r\n");
401
+ const tillLineEnding = P.described((state) => {
402
+ if (state.inputKind === 1)
403
+ state.encoding = enc;
404
+ const start = state.pos;
405
+ internal.scan(enc, state, isLineBreak, true, Infinity, state.pos, fast);
406
+ const offset = internal.scanOffset;
407
+ const stop = internal.scanStop;
408
+ if (stop === internal.Truncated || (stop === internal.End && state.partial)) {
409
+ return state.incomplete(1, expectedLineEnding);
410
+ }
411
+ if (stop === internal.Invalid)
412
+ return backtrack(state, "LineEnding", expectedLineEnding, offset);
413
+ if (stop === 0 && internal.next(enc, state, offset) === 13) {
414
+ const after = internal.next(enc, state, offset + internal.width);
415
+ if (after === internal.End && state.partial)
416
+ return state.incomplete(1, expectedLineEnding);
417
+ if (after !== 10)
418
+ return backtrack(state, "LineEnding", expectedLineEnding, offset);
419
+ }
420
+ state.pos = offset;
421
+ return enc.text(state.input, start, offset);
422
+ }, "tillLineEnding", { _tag: "TillLineEnding", encoding: enc });
423
+ const asciiDigits = takeWhileText(isAsciiDigit, { min: 1 }, false, "digit1", ["digit"], "Digit", true);
424
+ const hexDigits = takeWhileText(isAsciiHexDigit, { min: 1 }, false, "hexDigit1", ["hexadecimal digit"], "HexDigit", true);
425
+ const sign = P.opt(oneOfImpl("+-", false));
426
+ const signed = taken(P.seq(sign, asciiDigits));
427
+ const exponent = P.opt(P.seq(oneOfImpl("eE", false), sign, asciiDigits));
428
+ const unsignedFloat = P.alt(P.seq(caseless("inf"), P.opt(caseless("inity"))), P.seq(literal("."), asciiDigits, exponent), P.seq(asciiDigits, P.opt(P.seq(literal("."), P.opt(asciiDigits))), exponent));
429
+ const floatText = markFloatText(taken(P.alt(caseless("nan"), P.seq(sign, unsignedFloat))).pipe(P.expected("number")));
430
+ const matchControl = (control) => {
431
+ const ctrl = control.codePointAt(0);
432
+ return (state) => {
433
+ if (internal.next(enc, state) !== ctrl)
434
+ return false;
435
+ state.pos += internal.width;
436
+ return true;
437
+ };
438
+ };
439
+ return {
440
+ encoding,
441
+ any,
442
+ literal,
443
+ caseless,
444
+ oneOf: (set) => oneOfImpl(set, false),
445
+ noneOf: (set) => oneOfImpl(set, true),
446
+ bom,
447
+ take,
448
+ takeWhile: (set, r) => {
449
+ const m = compile(set, "string");
450
+ return takeWhileText(m.code, r, false, "takeWhile", [m.description], "TakeWhile", false, set);
451
+ },
452
+ takeTill: (set, r) => {
453
+ const m = compile(set, "string");
454
+ return takeWhileText(m.code, r, true, "takeTill", [`anything but ${m.description}`], "TakeWhile", false, set);
455
+ },
456
+ takeUntil,
457
+ rest,
458
+ taken,
459
+ alpha0: cls(isAlphabetic, 0, "letter", "Alpha"),
460
+ alpha1: cls(isAlphabetic, 1, "letter", "Alpha"),
461
+ digit0: cls(isDecimalDigit, 0, "digit", "Digit"),
462
+ digit1: cls(isDecimalDigit, 1, "digit", "Digit"),
463
+ alphanumeric0: cls(isAlphanumeric, 0, "letter or digit", "AlphaNumeric"),
464
+ alphanumeric1: cls(isAlphanumeric, 1, "letter or digit", "AlphaNumeric"),
465
+ space0: cls(isSpace, 0, "space", "Space", false),
466
+ space1: cls(isSpace, 1, "space", "Space", false),
467
+ multispace0: cls(isWhitespace, 0, "whitespace", "MultiSpace", false),
468
+ multispace1: cls(isWhitespace, 1, "whitespace", "MultiSpace", false),
469
+ identifier,
470
+ newline,
471
+ crlf,
472
+ tab: literal("\t"),
473
+ lineEnding: P.alt(newline, crlf).pipe(P.expected("line ending")),
474
+ tillLineEnding,
475
+ decUint: asciiDigits.pipe(P.tryMap((s) => overflow(Number(s))), P.named("decUint")),
476
+ decInt: signed.pipe(P.tryMap((s) => overflow(Number(s))), P.named("decInt")),
477
+ decBigUint: asciiDigits.pipe(P.map((s) => BigInt(s))),
478
+ decBigInt: signed.pipe(P.map((s) => BigInt(s.startsWith("+") ? s.slice(1) : s))),
479
+ hexUint: hexDigits.pipe(P.tryMap((s) => overflow(parseInt(s, 16))), P.named("hexUint")),
480
+ float: floatText.pipe(P.map(toFloat), P.named("float")),
481
+ takeEscaped: (normal, control, escapable) => takeEscapedImpl(normal, matchControl(control), escapable, (state, start) => enc.text(state.input, start, state.pos), control.codePointAt(0), enc),
482
+ escaped: (normal, control, escape) => escapedImpl(normal, matchControl(control), escape, control.codePointAt(0), enc)
483
+ };
484
+ };
485
+ /**
486
+ * Text parsers for JavaScript strings.
487
+ *
488
+ * @since 0.1.0
489
+ * @category instances
490
+ */
491
+ export const string = make(Encodings.string);
492
+ /**
493
+ * Text parsers for UTF-8 encoded bytes.
494
+ *
495
+ * @example
496
+ * ```ts
497
+ * import { Parser, Text } from "@thomasfosterau/effect-parse"
498
+ *
499
+ * const bytes = new TextEncoder().encode("naïve café")
500
+ * Parser.parse(Parser.separatedPair(Text.utf8.alpha1, Text.utf8.space1, Text.utf8.alpha1), bytes)
501
+ * // Result.succeed(["naïve", "café"])
502
+ * ```
503
+ *
504
+ * @since 0.1.0
505
+ * @category instances
506
+ */
507
+ export const utf8 = make(Encodings.utf8);
508
+ /**
509
+ * Text parsers for UTF-16 little endian bytes.
510
+ *
511
+ * @since 0.1.0
512
+ * @category instances
513
+ */
514
+ export const utf16le = make(Encodings.utf16le);
515
+ /**
516
+ * Text parsers for UTF-16 big endian bytes.
517
+ *
518
+ * @since 0.1.0
519
+ * @category instances
520
+ */
521
+ export const utf16be = make(Encodings.utf16be);
522
+ /**
523
+ * Text parsers for ISO-8859-1 (Latin-1) bytes.
524
+ *
525
+ * @since 0.1.0
526
+ * @category instances
527
+ */
528
+ export const latin1 = make(Encodings.latin1);
529
+ //# sourceMappingURL=Text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Text.js","sourceRoot":"","sources":["../src/Text.ts"],"names":[],"mappings":"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"}