@bilig/formula 0.1.2 → 0.1.4

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-format-builtins.js","sourceRoot":"","sources":["../../src/builtins/text-format-builtins.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { ErrorCode, type CellValue } from "@bilig/protocol";
2
+ import type { TextBuiltin } from "./text.js";
3
+ interface TextSearchBuiltinDeps {
4
+ error: (code: ErrorCode) => CellValue;
5
+ stringResult: (value: string) => CellValue;
6
+ numberResult: (value: number) => CellValue;
7
+ booleanResult: (value: boolean) => CellValue;
8
+ firstError: (args: readonly (CellValue | undefined)[]) => CellValue | undefined;
9
+ coerceText: (value: CellValue) => string;
10
+ coerceNumber: (value: CellValue) => number | undefined;
11
+ coerceBoolean: (value: CellValue, fallback: boolean) => boolean | CellValue;
12
+ coerceInteger: (value: CellValue | undefined, defaultValue: number) => number | CellValue;
13
+ coercePositiveStart: (value: CellValue | undefined, defaultValue: number) => number | CellValue;
14
+ isErrorValue: (value: number | CellValue) => value is CellValue;
15
+ utf8Bytes: (value: string) => Uint8Array;
16
+ findSubBytes: (haystack: Uint8Array, needle: Uint8Array, start: number) => number;
17
+ bytePositionToCharPosition: (text: string, startByte: number) => number;
18
+ charPositionToBytePosition: (text: string, charPosition: number) => number;
19
+ }
20
+ export declare function createTextSearchBuiltins(deps: TextSearchBuiltinDeps): Record<string, TextBuiltin>;
21
+ export {};
@@ -0,0 +1,469 @@
1
+ import { ErrorCode, ValueTag } from "@bilig/protocol";
2
+ function compileRegex(pattern, caseSensitivity, global = false) {
3
+ try {
4
+ const flags = `${caseSensitivity === 1 ? "i" : ""}${global ? "g" : ""}`;
5
+ return new RegExp(pattern, flags);
6
+ }
7
+ catch {
8
+ return { tag: ValueTag.Error, code: ErrorCode.Value };
9
+ }
10
+ }
11
+ function isRegexError(value) {
12
+ return !(value instanceof RegExp);
13
+ }
14
+ function applyReplacementTemplate(template, match, captures) {
15
+ let output = "";
16
+ for (let index = 0; index < template.length; index += 1) {
17
+ const char = template[index];
18
+ if (char !== "$") {
19
+ output += char;
20
+ continue;
21
+ }
22
+ const next = template[index + 1];
23
+ if (next === undefined) {
24
+ output += "$";
25
+ continue;
26
+ }
27
+ if (next === "$") {
28
+ output += "$";
29
+ index += 1;
30
+ continue;
31
+ }
32
+ if (next === "&") {
33
+ output += match;
34
+ index += 1;
35
+ continue;
36
+ }
37
+ if (!/\d/.test(next)) {
38
+ output += "$";
39
+ continue;
40
+ }
41
+ const secondDigit = template[index + 2];
42
+ const twoDigitIndex = secondDigit !== undefined && /\d/.test(secondDigit) ? Number(`${next}${secondDigit}`) : -1;
43
+ if (twoDigitIndex >= 1 && twoDigitIndex <= captures.length) {
44
+ output += captures[twoDigitIndex - 1] ?? "";
45
+ index += 2;
46
+ continue;
47
+ }
48
+ const captureIndex = Number(next);
49
+ if (captureIndex >= 1 && captureIndex <= captures.length) {
50
+ output += captures[captureIndex - 1] ?? "";
51
+ index += 1;
52
+ continue;
53
+ }
54
+ output += `$${next}`;
55
+ index += 1;
56
+ }
57
+ return output;
58
+ }
59
+ function escapeRegExp(value) {
60
+ return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
61
+ }
62
+ function indexOfWithMode(text, delimiter, start, matchMode) {
63
+ if (matchMode === 1) {
64
+ return text.toLowerCase().indexOf(delimiter.toLowerCase(), start);
65
+ }
66
+ return text.indexOf(delimiter, start);
67
+ }
68
+ function lastIndexOfWithMode(text, delimiter, start, matchMode) {
69
+ if (matchMode === 1) {
70
+ return text.toLowerCase().lastIndexOf(delimiter.toLowerCase(), start);
71
+ }
72
+ return text.lastIndexOf(delimiter, start);
73
+ }
74
+ function hasSearchSyntax(pattern) {
75
+ for (let index = 0; index < pattern.length; index += 1) {
76
+ const char = pattern[index];
77
+ if (char === "~" || char === "*" || char === "?") {
78
+ return true;
79
+ }
80
+ }
81
+ return false;
82
+ }
83
+ function buildSearchRegex(pattern) {
84
+ let source = "^";
85
+ for (let index = 0; index < pattern.length; index += 1) {
86
+ const char = pattern[index];
87
+ if (char === "~") {
88
+ const next = pattern[index + 1];
89
+ if (next === undefined) {
90
+ source += escapeRegExp(char);
91
+ }
92
+ else {
93
+ source += escapeRegExp(next);
94
+ index += 1;
95
+ }
96
+ continue;
97
+ }
98
+ if (char === "*") {
99
+ source += "[\\s\\S]*";
100
+ continue;
101
+ }
102
+ if (char === "?") {
103
+ source += "[\\s\\S]";
104
+ continue;
105
+ }
106
+ source += escapeRegExp(char);
107
+ }
108
+ return new RegExp(source, "i");
109
+ }
110
+ function findPosition(deps, needle, haystack, start, caseSensitive, wildcardAware) {
111
+ const startIndex = start - 1;
112
+ if (needle === "") {
113
+ return start;
114
+ }
115
+ if (startIndex > haystack.length) {
116
+ return deps.error(ErrorCode.Value);
117
+ }
118
+ if (!wildcardAware || !hasSearchSyntax(needle)) {
119
+ const normalizedHaystack = caseSensitive ? haystack : haystack.toLowerCase();
120
+ const normalizedNeedle = caseSensitive ? needle : needle.toLowerCase();
121
+ const found = normalizedHaystack.indexOf(normalizedNeedle, startIndex);
122
+ return found === -1 ? deps.error(ErrorCode.Value) : found + 1;
123
+ }
124
+ const regex = buildSearchRegex(needle);
125
+ for (let index = startIndex; index <= haystack.length; index += 1) {
126
+ if (regex.test(haystack.slice(index))) {
127
+ return index + 1;
128
+ }
129
+ }
130
+ return deps.error(ErrorCode.Value);
131
+ }
132
+ export function createTextSearchBuiltins(deps) {
133
+ return {
134
+ FIND: (...args) => {
135
+ const existingError = deps.firstError(args);
136
+ if (existingError) {
137
+ return existingError;
138
+ }
139
+ const [findTextValue, withinTextValue, startValue] = args;
140
+ if (findTextValue === undefined || withinTextValue === undefined) {
141
+ return deps.error(ErrorCode.Value);
142
+ }
143
+ const start = deps.coercePositiveStart(startValue, 1);
144
+ if (deps.isErrorValue(start)) {
145
+ return start;
146
+ }
147
+ const found = findPosition(deps, deps.coerceText(findTextValue), deps.coerceText(withinTextValue), start, true, false);
148
+ return deps.isErrorValue(found) ? found : deps.numberResult(found);
149
+ },
150
+ SEARCH: (...args) => {
151
+ const existingError = deps.firstError(args);
152
+ if (existingError) {
153
+ return existingError;
154
+ }
155
+ const [findTextValue, withinTextValue, startValue] = args;
156
+ if (findTextValue === undefined || withinTextValue === undefined) {
157
+ return deps.error(ErrorCode.Value);
158
+ }
159
+ const start = deps.coercePositiveStart(startValue, 1);
160
+ if (deps.isErrorValue(start)) {
161
+ return start;
162
+ }
163
+ const found = findPosition(deps, deps.coerceText(findTextValue), deps.coerceText(withinTextValue), start, false, true);
164
+ return deps.isErrorValue(found) ? found : deps.numberResult(found);
165
+ },
166
+ SEARCHB: (...args) => {
167
+ const existingError = deps.firstError(args);
168
+ if (existingError) {
169
+ return existingError;
170
+ }
171
+ const [findTextValue, withinTextValue, startValue] = args;
172
+ if (findTextValue === undefined || withinTextValue === undefined) {
173
+ return deps.error(ErrorCode.Value);
174
+ }
175
+ const text = deps.coerceText(withinTextValue);
176
+ const start = deps.coercePositiveStart(startValue, 1);
177
+ if (deps.isErrorValue(start)) {
178
+ return start;
179
+ }
180
+ if (start > deps.utf8Bytes(text).length + 1) {
181
+ return deps.error(ErrorCode.Value);
182
+ }
183
+ const found = findPosition(deps, deps.coerceText(findTextValue), text, deps.bytePositionToCharPosition(text, start), false, true);
184
+ return deps.isErrorValue(found)
185
+ ? found
186
+ : deps.numberResult(deps.charPositionToBytePosition(text, found));
187
+ },
188
+ FINDB: (...args) => {
189
+ const existingError = deps.firstError(args);
190
+ if (existingError) {
191
+ return existingError;
192
+ }
193
+ const [findTextValue, withinTextValue, startValue] = args;
194
+ if (findTextValue === undefined || withinTextValue === undefined) {
195
+ return deps.error(ErrorCode.Value);
196
+ }
197
+ const start = deps.coercePositiveStart(startValue, 1);
198
+ if (deps.isErrorValue(start)) {
199
+ return start;
200
+ }
201
+ const findBytes = deps.utf8Bytes(deps.coerceText(findTextValue));
202
+ const withinBytes = deps.utf8Bytes(deps.coerceText(withinTextValue));
203
+ if (start > withinBytes.length + 1) {
204
+ return deps.error(ErrorCode.Value);
205
+ }
206
+ const found = deps.findSubBytes(withinBytes, findBytes, start - 1);
207
+ return found === -1 ? deps.error(ErrorCode.Value) : deps.numberResult(found + 1);
208
+ },
209
+ REGEXTEST: (...args) => {
210
+ const existingError = deps.firstError(args);
211
+ if (existingError) {
212
+ return existingError;
213
+ }
214
+ const [textValue, patternValue, caseSensitivityValue] = args;
215
+ if (textValue === undefined || patternValue === undefined) {
216
+ return deps.error(ErrorCode.Value);
217
+ }
218
+ const caseSensitivity = deps.coerceInteger(caseSensitivityValue, 0);
219
+ if (deps.isErrorValue(caseSensitivity) ||
220
+ (caseSensitivity !== 0 && caseSensitivity !== 1)) {
221
+ return deps.error(ErrorCode.Value);
222
+ }
223
+ const regex = compileRegex(deps.coerceText(patternValue), caseSensitivity);
224
+ if (isRegexError(regex)) {
225
+ return regex;
226
+ }
227
+ return deps.booleanResult(regex.test(deps.coerceText(textValue)));
228
+ },
229
+ REGEXREPLACE: (...args) => {
230
+ const existingError = deps.firstError(args);
231
+ if (existingError) {
232
+ return existingError;
233
+ }
234
+ const [textValue, patternValue, replacementValue, occurrenceValue, caseSensitivityValue] = args;
235
+ if (textValue === undefined || patternValue === undefined || replacementValue === undefined) {
236
+ return deps.error(ErrorCode.Value);
237
+ }
238
+ const occurrence = deps.coerceInteger(occurrenceValue, 0);
239
+ const caseSensitivity = deps.coerceInteger(caseSensitivityValue, 0);
240
+ if (deps.isErrorValue(occurrence) ||
241
+ deps.isErrorValue(caseSensitivity) ||
242
+ (caseSensitivity !== 0 && caseSensitivity !== 1)) {
243
+ return deps.error(ErrorCode.Value);
244
+ }
245
+ const text = deps.coerceText(textValue);
246
+ const replacement = deps.coerceText(replacementValue);
247
+ const regex = compileRegex(deps.coerceText(patternValue), caseSensitivity, true);
248
+ if (isRegexError(regex)) {
249
+ return regex;
250
+ }
251
+ if (occurrence === 0) {
252
+ return deps.stringResult(text.replace(regex, replacement));
253
+ }
254
+ const matches = [...text.matchAll(regex)];
255
+ if (matches.length === 0) {
256
+ return deps.stringResult(text);
257
+ }
258
+ const targetIndex = occurrence > 0 ? occurrence - 1 : matches.length + occurrence;
259
+ if (targetIndex < 0 || targetIndex >= matches.length) {
260
+ return deps.stringResult(text);
261
+ }
262
+ let currentIndex = -1;
263
+ return deps.stringResult(text.replace(regex, (match, ...rest) => {
264
+ currentIndex += 1;
265
+ if (currentIndex !== targetIndex) {
266
+ return match;
267
+ }
268
+ const captures = rest
269
+ .slice(0, -2)
270
+ .map((value) => (typeof value === "string" ? value : undefined));
271
+ return applyReplacementTemplate(replacement, match, captures);
272
+ }));
273
+ },
274
+ REGEXEXTRACT: (...args) => {
275
+ const existingError = deps.firstError(args);
276
+ if (existingError) {
277
+ return existingError;
278
+ }
279
+ const [textValue, patternValue, returnModeValue, caseSensitivityValue] = args;
280
+ if (textValue === undefined || patternValue === undefined) {
281
+ return deps.error(ErrorCode.Value);
282
+ }
283
+ const returnMode = deps.coerceInteger(returnModeValue, 0);
284
+ const caseSensitivity = deps.coerceInteger(caseSensitivityValue, 0);
285
+ if (deps.isErrorValue(returnMode) ||
286
+ deps.isErrorValue(caseSensitivity) ||
287
+ ![0, 1, 2].includes(returnMode) ||
288
+ (caseSensitivity !== 0 && caseSensitivity !== 1)) {
289
+ return deps.error(ErrorCode.Value);
290
+ }
291
+ const text = deps.coerceText(textValue);
292
+ const pattern = deps.coerceText(patternValue);
293
+ if (returnMode === 1) {
294
+ const regex = compileRegex(pattern, caseSensitivity, true);
295
+ if (isRegexError(regex)) {
296
+ return regex;
297
+ }
298
+ const matches = [...text.matchAll(regex)].map((entry) => entry[0]);
299
+ if (matches.length === 0) {
300
+ return deps.error(ErrorCode.NA);
301
+ }
302
+ return {
303
+ kind: "array",
304
+ rows: matches.length,
305
+ cols: 1,
306
+ values: matches.map((match) => deps.stringResult(match)),
307
+ };
308
+ }
309
+ const regex = compileRegex(pattern, caseSensitivity, false);
310
+ if (isRegexError(regex)) {
311
+ return regex;
312
+ }
313
+ const match = text.match(regex);
314
+ if (!match) {
315
+ return deps.error(ErrorCode.NA);
316
+ }
317
+ if (returnMode === 0) {
318
+ return deps.stringResult(match[0]);
319
+ }
320
+ const groups = match.slice(1);
321
+ if (groups.length === 0) {
322
+ return deps.error(ErrorCode.NA);
323
+ }
324
+ return {
325
+ kind: "array",
326
+ rows: 1,
327
+ cols: groups.length,
328
+ values: groups.map((group) => deps.stringResult(group ?? "")),
329
+ };
330
+ },
331
+ TEXTBEFORE: (...args) => {
332
+ const existingError = deps.firstError(args);
333
+ if (existingError) {
334
+ return existingError;
335
+ }
336
+ const [textValue, delimiterValue, instanceValue, matchModeValue, matchEndValue, ifNotFoundValue,] = args;
337
+ if (textValue === undefined || delimiterValue === undefined) {
338
+ return deps.error(ErrorCode.Value);
339
+ }
340
+ const text = deps.coerceText(textValue);
341
+ const delimiter = deps.coerceText(delimiterValue);
342
+ if (delimiter === "") {
343
+ return deps.error(ErrorCode.Value);
344
+ }
345
+ const instanceNumber = instanceValue === undefined ? 1 : deps.coerceNumber(instanceValue);
346
+ const matchMode = matchModeValue === undefined ? 0 : deps.coerceNumber(matchModeValue);
347
+ const matchEndNumber = matchEndValue === undefined ? 0 : deps.coerceNumber(matchEndValue);
348
+ if (instanceNumber === undefined ||
349
+ matchMode === undefined ||
350
+ matchEndNumber === undefined ||
351
+ !Number.isInteger(instanceNumber) ||
352
+ instanceNumber === 0 ||
353
+ !Number.isInteger(matchMode) ||
354
+ (matchMode !== 0 && matchMode !== 1)) {
355
+ return deps.error(ErrorCode.Value);
356
+ }
357
+ const matchEnd = matchEndNumber !== 0;
358
+ if (instanceNumber > 0) {
359
+ let searchFrom = 0;
360
+ let found = -1;
361
+ for (let count = 0; count < instanceNumber; count += 1) {
362
+ found = indexOfWithMode(text, delimiter, searchFrom, matchMode);
363
+ if (found === -1) {
364
+ return ifNotFoundValue ?? deps.error(ErrorCode.NA);
365
+ }
366
+ searchFrom = found + delimiter.length;
367
+ }
368
+ return deps.stringResult(text.slice(0, found));
369
+ }
370
+ let searchFrom = text.length;
371
+ let found = matchEnd ? text.length : -1;
372
+ for (let count = 0; count < Math.abs(instanceNumber); count += 1) {
373
+ found = lastIndexOfWithMode(text, delimiter, searchFrom, matchMode);
374
+ if (found === -1) {
375
+ return ifNotFoundValue ?? deps.error(ErrorCode.NA);
376
+ }
377
+ searchFrom = found - 1;
378
+ }
379
+ return deps.stringResult(text.slice(0, found));
380
+ },
381
+ TEXTAFTER: (...args) => {
382
+ const existingError = deps.firstError(args);
383
+ if (existingError) {
384
+ return existingError;
385
+ }
386
+ const [textValue, delimiterValue, instanceValue, matchModeValue, matchEndValue, ifNotFoundValue,] = args;
387
+ if (textValue === undefined || delimiterValue === undefined) {
388
+ return deps.error(ErrorCode.Value);
389
+ }
390
+ const text = deps.coerceText(textValue);
391
+ const delimiter = deps.coerceText(delimiterValue);
392
+ if (delimiter === "") {
393
+ return deps.error(ErrorCode.Value);
394
+ }
395
+ const instanceNumber = instanceValue === undefined ? 1 : deps.coerceNumber(instanceValue);
396
+ const matchMode = matchModeValue === undefined ? 0 : deps.coerceNumber(matchModeValue);
397
+ const matchEndNumber = matchEndValue === undefined ? 0 : deps.coerceNumber(matchEndValue);
398
+ if (instanceNumber === undefined ||
399
+ matchMode === undefined ||
400
+ matchEndNumber === undefined ||
401
+ !Number.isInteger(instanceNumber) ||
402
+ instanceNumber === 0 ||
403
+ !Number.isInteger(matchMode) ||
404
+ (matchMode !== 0 && matchMode !== 1)) {
405
+ return deps.error(ErrorCode.Value);
406
+ }
407
+ const matchEnd = matchEndNumber !== 0;
408
+ if (instanceNumber > 0) {
409
+ let searchFrom = 0;
410
+ let found = -1;
411
+ for (let count = 0; count < instanceNumber; count += 1) {
412
+ found = indexOfWithMode(text, delimiter, searchFrom, matchMode);
413
+ if (found === -1) {
414
+ return ifNotFoundValue ?? deps.error(ErrorCode.NA);
415
+ }
416
+ searchFrom = found + delimiter.length;
417
+ }
418
+ return deps.stringResult(text.slice(found + delimiter.length));
419
+ }
420
+ let searchFrom = text.length;
421
+ let found = matchEnd ? text.length : -1;
422
+ for (let count = 0; count < Math.abs(instanceNumber); count += 1) {
423
+ found = lastIndexOfWithMode(text, delimiter, searchFrom, matchMode);
424
+ if (found === -1) {
425
+ return ifNotFoundValue ?? deps.error(ErrorCode.NA);
426
+ }
427
+ searchFrom = found - 1;
428
+ }
429
+ return deps.stringResult(text.slice(found + delimiter.length));
430
+ },
431
+ TEXTJOIN: (...args) => {
432
+ const existingError = deps.firstError(args);
433
+ if (existingError) {
434
+ return existingError;
435
+ }
436
+ const [delimiterValue, ignoreEmptyValue, ...values] = args;
437
+ if (delimiterValue === undefined || ignoreEmptyValue === undefined || values.length === 0) {
438
+ return deps.error(ErrorCode.Value);
439
+ }
440
+ const delimiter = deps.coerceText(delimiterValue);
441
+ const ignoreEmpty = deps.coerceBoolean(ignoreEmptyValue, false);
442
+ if (typeof ignoreEmpty !== "boolean") {
443
+ return ignoreEmpty;
444
+ }
445
+ const valuesJoined = [];
446
+ for (const value of values) {
447
+ if (value === undefined) {
448
+ continue;
449
+ }
450
+ if (value.tag === ValueTag.Empty) {
451
+ if (!ignoreEmpty) {
452
+ valuesJoined.push("");
453
+ }
454
+ continue;
455
+ }
456
+ if (value.tag === ValueTag.String && value.value === "" && ignoreEmpty) {
457
+ continue;
458
+ }
459
+ if (value.tag === ValueTag.String && value.value === "" && !ignoreEmpty) {
460
+ valuesJoined.push("");
461
+ continue;
462
+ }
463
+ valuesJoined.push(deps.coerceText(value));
464
+ }
465
+ return deps.stringResult(valuesJoined.join(delimiter));
466
+ },
467
+ };
468
+ }
469
+ //# sourceMappingURL=text-search-builtins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-search-builtins.js","sourceRoot":"","sources":["../../src/builtins/text-search-builtins.ts"],"names":[],"mappings":"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"}