@bilig/formula 0.1.0 → 0.1.3

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 (30) hide show
  1. package/dist/builtins/lookup-hypothesis-builtins.d.ts +4 -5
  2. package/dist/builtins/lookup-hypothesis-builtins.js +393 -10
  3. package/dist/builtins/lookup-hypothesis-builtins.js.map +1 -1
  4. package/dist/builtins/lookup.js +3 -387
  5. package/dist/builtins/lookup.js.map +1 -1
  6. package/dist/builtins/placeholder.d.ts +2 -2
  7. package/dist/builtins/text-core-builtins.d.ts +12 -0
  8. package/dist/builtins/text-core-builtins.js +409 -0
  9. package/dist/builtins/text-core-builtins.js.map +1 -0
  10. package/dist/builtins/text-format-builtins.d.ts +14 -0
  11. package/dist/builtins/text-format-builtins.js +537 -0
  12. package/dist/builtins/text-format-builtins.js.map +1 -0
  13. package/dist/builtins/text-search-builtins.d.ts +21 -0
  14. package/dist/builtins/text-search-builtins.js +469 -0
  15. package/dist/builtins/text-search-builtins.js.map +1 -0
  16. package/dist/builtins/text.js +41 -1368
  17. package/dist/builtins/text.js.map +1 -1
  18. package/dist/js-evaluator-array-special-calls.d.ts +28 -0
  19. package/dist/js-evaluator-array-special-calls.js +340 -0
  20. package/dist/js-evaluator-array-special-calls.js.map +1 -0
  21. package/dist/js-evaluator-context-special-calls.d.ts +24 -0
  22. package/dist/js-evaluator-context-special-calls.js +156 -0
  23. package/dist/js-evaluator-context-special-calls.js.map +1 -0
  24. package/dist/js-evaluator-types.d.ts +117 -0
  25. package/dist/js-evaluator-types.js +2 -0
  26. package/dist/js-evaluator-types.js.map +1 -0
  27. package/dist/js-evaluator.d.ts +3 -100
  28. package/dist/js-evaluator.js +42 -492
  29. package/dist/js-evaluator.js.map +1 -1
  30. package/package.json +6 -6
@@ -0,0 +1,409 @@
1
+ import { ErrorCode } from "@bilig/protocol";
2
+ const bahtDigitWords = ["ศูนย์", "หนึ่ง", "สอง", "สาม", "สี่", "ห้า", "หก", "เจ็ด", "แปด", "เก้า"];
3
+ const bahtScaleWords = ["", "สิบ", "ร้อย", "พัน", "หมื่น", "แสน"];
4
+ const maxBahtTextSatang = 999_999_999_999_999;
5
+ const halfWidthKanaToFullWidthMap = new Map([
6
+ ["。", "。"],
7
+ ["「", "「"],
8
+ ["」", "」"],
9
+ ["、", "、"],
10
+ ["・", "・"],
11
+ ["ヲ", "ヲ"],
12
+ ["ァ", "ァ"],
13
+ ["ィ", "ィ"],
14
+ ["ゥ", "ゥ"],
15
+ ["ェ", "ェ"],
16
+ ["ォ", "ォ"],
17
+ ["ャ", "ャ"],
18
+ ["ュ", "ュ"],
19
+ ["ョ", "ョ"],
20
+ ["ッ", "ッ"],
21
+ ["ー", "ー"],
22
+ ["ア", "ア"],
23
+ ["イ", "イ"],
24
+ ["ウ", "ウ"],
25
+ ["エ", "エ"],
26
+ ["オ", "オ"],
27
+ ["カ", "カ"],
28
+ ["キ", "キ"],
29
+ ["ク", "ク"],
30
+ ["ケ", "ケ"],
31
+ ["コ", "コ"],
32
+ ["サ", "サ"],
33
+ ["シ", "シ"],
34
+ ["ス", "ス"],
35
+ ["セ", "セ"],
36
+ ["ソ", "ソ"],
37
+ ["タ", "タ"],
38
+ ["チ", "チ"],
39
+ ["ツ", "ツ"],
40
+ ["テ", "テ"],
41
+ ["ト", "ト"],
42
+ ["ナ", "ナ"],
43
+ ["ニ", "ニ"],
44
+ ["ヌ", "ヌ"],
45
+ ["ネ", "ネ"],
46
+ ["ノ", "ノ"],
47
+ ["ハ", "ハ"],
48
+ ["ヒ", "ヒ"],
49
+ ["フ", "フ"],
50
+ ["ヘ", "ヘ"],
51
+ ["ホ", "ホ"],
52
+ ["マ", "マ"],
53
+ ["ミ", "ミ"],
54
+ ["ム", "ム"],
55
+ ["メ", "メ"],
56
+ ["モ", "モ"],
57
+ ["ヤ", "ヤ"],
58
+ ["ユ", "ユ"],
59
+ ["ヨ", "ヨ"],
60
+ ["ラ", "ラ"],
61
+ ["リ", "リ"],
62
+ ["ル", "ル"],
63
+ ["レ", "レ"],
64
+ ["ロ", "ロ"],
65
+ ["ワ", "ワ"],
66
+ ["ン", "ン"],
67
+ ]);
68
+ const halfWidthVoicedKanaToFullWidthMap = new Map([
69
+ ["ヴ", "ヴ"],
70
+ ["ガ", "ガ"],
71
+ ["ギ", "ギ"],
72
+ ["グ", "グ"],
73
+ ["ゲ", "ゲ"],
74
+ ["ゴ", "ゴ"],
75
+ ["ザ", "ザ"],
76
+ ["ジ", "ジ"],
77
+ ["ズ", "ズ"],
78
+ ["ゼ", "ゼ"],
79
+ ["ゾ", "ゾ"],
80
+ ["ダ", "ダ"],
81
+ ["ヂ", "ヂ"],
82
+ ["ヅ", "ヅ"],
83
+ ["デ", "デ"],
84
+ ["ド", "ド"],
85
+ ["バ", "バ"],
86
+ ["ビ", "ビ"],
87
+ ["ブ", "ブ"],
88
+ ["ベ", "ベ"],
89
+ ["ボ", "ボ"],
90
+ ["パ", "パ"],
91
+ ["ピ", "ピ"],
92
+ ["プ", "プ"],
93
+ ["ペ", "ペ"],
94
+ ["ポ", "ポ"],
95
+ ]);
96
+ const fullWidthKanaToHalfWidthMap = new Map([
97
+ ...[...halfWidthKanaToFullWidthMap.entries()].map(([half, full]) => [full, half]),
98
+ ...[...halfWidthVoicedKanaToFullWidthMap.entries()].map(([half, full]) => [full, half]),
99
+ ]);
100
+ function bahtSegmentText(digits) {
101
+ const normalized = digits.replace(/^0+(?=\d)/u, "");
102
+ if (normalized === "" || /^0+$/u.test(normalized)) {
103
+ return "";
104
+ }
105
+ let output = "";
106
+ let hasHigherNonZero = false;
107
+ const length = normalized.length;
108
+ for (let index = 0; index < length; index += 1) {
109
+ const digit = normalized.charCodeAt(index) - 48;
110
+ if (digit === 0) {
111
+ continue;
112
+ }
113
+ const position = length - index - 1;
114
+ if (position === 0) {
115
+ output += digit === 1 && hasHigherNonZero ? "เอ็ด" : bahtDigitWords[digit];
116
+ }
117
+ else if (position === 1) {
118
+ output += digit === 1 ? "สิบ" : digit === 2 ? "ยี่สิบ" : `${bahtDigitWords[digit]}สิบ`;
119
+ }
120
+ else {
121
+ output += `${bahtDigitWords[digit]}${bahtScaleWords[position]}`;
122
+ }
123
+ hasHigherNonZero = true;
124
+ }
125
+ return output;
126
+ }
127
+ function bahtIntegerText(digits) {
128
+ const normalized = digits.replace(/^0+(?=\d)/u, "");
129
+ if (normalized === "" || /^0+$/u.test(normalized)) {
130
+ return bahtDigitWords[0];
131
+ }
132
+ if (normalized.length > 6) {
133
+ const head = bahtIntegerText(normalized.slice(0, -6));
134
+ const tail = bahtSegmentText(normalized.slice(-6));
135
+ return `${head}ล้าน${tail}`;
136
+ }
137
+ return bahtSegmentText(normalized) || bahtDigitWords[0];
138
+ }
139
+ function bahtTextFromNumber(value, deps) {
140
+ if (!Number.isFinite(value)) {
141
+ return deps.error(ErrorCode.Value);
142
+ }
143
+ const absolute = Math.abs(value);
144
+ const scaled = Math.round(absolute * 100);
145
+ if (!Number.isSafeInteger(scaled) || scaled > maxBahtTextSatang) {
146
+ return deps.error(ErrorCode.Value);
147
+ }
148
+ const baht = Math.trunc(scaled / 100);
149
+ const satang = scaled % 100;
150
+ const prefix = value < 0 ? "ลบ" : "";
151
+ const bahtText = bahtIntegerText(String(baht));
152
+ if (satang === 0) {
153
+ return deps.stringResult(`${prefix}${bahtText}บาทถ้วน`);
154
+ }
155
+ return deps.stringResult(`${prefix}${bahtText}บาท${bahtSegmentText(String(satang))}สตางค์`);
156
+ }
157
+ function excelTrim(input) {
158
+ let start = 0;
159
+ let end = input.length;
160
+ while (start < end && input.charCodeAt(start) === 32) {
161
+ start += 1;
162
+ }
163
+ while (end > start && input.charCodeAt(end - 1) === 32) {
164
+ end -= 1;
165
+ }
166
+ return input.slice(start, end).replace(/ {2,}/g, " ");
167
+ }
168
+ function stripControlCharacters(input) {
169
+ let output = "";
170
+ for (let index = 0; index < input.length; index += 1) {
171
+ const char = input.charCodeAt(index);
172
+ if ((char >= 0 && char <= 31) || char === 127) {
173
+ continue;
174
+ }
175
+ output += input[index] ?? "";
176
+ }
177
+ return output;
178
+ }
179
+ function isLeadingSurrogate(codeUnit) {
180
+ return codeUnit >= 0xd800 && codeUnit <= 0xdbff;
181
+ }
182
+ function isTrailingSurrogate(codeUnit) {
183
+ return codeUnit >= 0xdc00 && codeUnit <= 0xdfff;
184
+ }
185
+ function toJapaneseFullWidth(input) {
186
+ let output = "";
187
+ for (let index = 0; index < input.length; index += 1) {
188
+ const char = input[index];
189
+ const code = input.charCodeAt(index);
190
+ if (isLeadingSurrogate(code) && index + 1 < input.length) {
191
+ const nextCode = input.charCodeAt(index + 1);
192
+ if (isTrailingSurrogate(nextCode)) {
193
+ output += input.slice(index, index + 2);
194
+ index += 1;
195
+ continue;
196
+ }
197
+ }
198
+ if (code === 0x20) {
199
+ output += "\u3000";
200
+ continue;
201
+ }
202
+ if (code >= 0x21 && code <= 0x7e) {
203
+ output += String.fromCharCode(code + 0xfee0);
204
+ continue;
205
+ }
206
+ const next = input[index + 1];
207
+ if (next !== undefined) {
208
+ const voiced = halfWidthVoicedKanaToFullWidthMap.get(char + next);
209
+ if (voiced !== undefined) {
210
+ output += voiced;
211
+ index += 1;
212
+ continue;
213
+ }
214
+ }
215
+ const mapped = halfWidthKanaToFullWidthMap.get(char);
216
+ output += mapped ?? char;
217
+ }
218
+ return output;
219
+ }
220
+ function toJapaneseHalfWidth(input) {
221
+ let output = "";
222
+ for (let index = 0; index < input.length; index += 1) {
223
+ const char = input[index];
224
+ const code = input.charCodeAt(index);
225
+ if (isLeadingSurrogate(code) && index + 1 < input.length) {
226
+ const nextCode = input.charCodeAt(index + 1);
227
+ if (isTrailingSurrogate(nextCode)) {
228
+ output += input.slice(index, index + 2);
229
+ index += 1;
230
+ continue;
231
+ }
232
+ }
233
+ if (code === 0x3000) {
234
+ output += " ";
235
+ continue;
236
+ }
237
+ if (code >= 0xff01 && code <= 0xff5e) {
238
+ output += String.fromCharCode(code - 0xfee0);
239
+ continue;
240
+ }
241
+ const mapped = fullWidthKanaToHalfWidthMap.get(char);
242
+ output += mapped ?? char;
243
+ }
244
+ return output;
245
+ }
246
+ function toTitleCase(input) {
247
+ let result = "";
248
+ let capitalizeNext = true;
249
+ for (let index = 0; index < input.length; index += 1) {
250
+ const char = input[index] ?? "";
251
+ const code = char.charCodeAt(0);
252
+ const isAlpha = (code >= 65 && code <= 90) || (code >= 97 && code <= 122);
253
+ if (!isAlpha) {
254
+ capitalizeNext = true;
255
+ result += char;
256
+ continue;
257
+ }
258
+ result += capitalizeNext ? char.toUpperCase() : char.toLowerCase();
259
+ capitalizeNext = false;
260
+ }
261
+ return result;
262
+ }
263
+ export function createTextCoreBuiltins(deps) {
264
+ return {
265
+ CLEAN: (...args) => {
266
+ const existingError = deps.firstError(args);
267
+ if (existingError) {
268
+ return existingError;
269
+ }
270
+ const [textValue] = args;
271
+ if (textValue === undefined) {
272
+ return deps.error(ErrorCode.Value);
273
+ }
274
+ return deps.stringResult(stripControlCharacters(deps.coerceText(textValue)));
275
+ },
276
+ ASC: (...args) => {
277
+ const existingError = deps.firstError(args);
278
+ if (existingError) {
279
+ return existingError;
280
+ }
281
+ const [textValue] = args;
282
+ if (textValue === undefined) {
283
+ return deps.error(ErrorCode.Value);
284
+ }
285
+ return deps.stringResult(toJapaneseHalfWidth(deps.coerceText(textValue)));
286
+ },
287
+ JIS: (...args) => {
288
+ const existingError = deps.firstError(args);
289
+ if (existingError) {
290
+ return existingError;
291
+ }
292
+ const [textValue] = args;
293
+ if (textValue === undefined) {
294
+ return deps.error(ErrorCode.Value);
295
+ }
296
+ return deps.stringResult(toJapaneseFullWidth(deps.coerceText(textValue)));
297
+ },
298
+ DBCS: (...args) => {
299
+ const existingError = deps.firstError(args);
300
+ if (existingError) {
301
+ return existingError;
302
+ }
303
+ const [textValue] = args;
304
+ if (textValue === undefined) {
305
+ return deps.error(ErrorCode.Value);
306
+ }
307
+ return deps.stringResult(toJapaneseFullWidth(deps.coerceText(textValue)));
308
+ },
309
+ BAHTTEXT: (...args) => {
310
+ const existingError = deps.firstError(args);
311
+ if (existingError) {
312
+ return existingError;
313
+ }
314
+ const [value] = args;
315
+ if (value === undefined) {
316
+ return deps.error(ErrorCode.Value);
317
+ }
318
+ const numeric = deps.coerceNumber(value);
319
+ return numeric === undefined ? deps.error(ErrorCode.Value) : bahtTextFromNumber(numeric, deps);
320
+ },
321
+ PHONETIC: (...args) => {
322
+ const existingError = deps.firstError(args);
323
+ if (existingError) {
324
+ return existingError;
325
+ }
326
+ const [value] = args;
327
+ if (value === undefined) {
328
+ return deps.error(ErrorCode.Value);
329
+ }
330
+ return deps.stringResult(deps.coerceText(value));
331
+ },
332
+ CONCATENATE: (...args) => {
333
+ const existingError = deps.firstError(args);
334
+ if (existingError) {
335
+ return existingError;
336
+ }
337
+ if (args.length === 0) {
338
+ return deps.error(ErrorCode.Value);
339
+ }
340
+ return deps.stringResult(args.map(deps.coerceText).join(""));
341
+ },
342
+ CONCAT: (...args) => {
343
+ const existingError = deps.firstError(args);
344
+ if (existingError) {
345
+ return existingError;
346
+ }
347
+ if (args.length === 0) {
348
+ return deps.error(ErrorCode.Value);
349
+ }
350
+ return deps.stringResult(args.map(deps.coerceText).join(""));
351
+ },
352
+ PROPER: (...args) => {
353
+ const existingError = deps.firstError(args);
354
+ if (existingError) {
355
+ return existingError;
356
+ }
357
+ const [textValue] = args;
358
+ if (textValue === undefined) {
359
+ return deps.error(ErrorCode.Value);
360
+ }
361
+ return deps.stringResult(toTitleCase(deps.coerceText(textValue)));
362
+ },
363
+ EXACT: (...args) => {
364
+ const existingError = deps.firstError(args);
365
+ if (existingError) {
366
+ return existingError;
367
+ }
368
+ const [leftValue, rightValue] = args;
369
+ if (leftValue === undefined || rightValue === undefined) {
370
+ return deps.error(ErrorCode.Value);
371
+ }
372
+ return deps.booleanResult(deps.coerceText(leftValue) === deps.coerceText(rightValue));
373
+ },
374
+ TRIM: (...args) => {
375
+ const existingError = deps.firstError(args);
376
+ if (existingError) {
377
+ return existingError;
378
+ }
379
+ const [value] = args;
380
+ if (value === undefined) {
381
+ return deps.error(ErrorCode.Value);
382
+ }
383
+ return deps.stringResult(excelTrim(deps.coerceText(value)));
384
+ },
385
+ UPPER: (...args) => {
386
+ const existingError = deps.firstError(args);
387
+ if (existingError) {
388
+ return existingError;
389
+ }
390
+ const [value] = args;
391
+ if (value === undefined) {
392
+ return deps.error(ErrorCode.Value);
393
+ }
394
+ return deps.stringResult(deps.coerceText(value).toUpperCase());
395
+ },
396
+ LOWER: (...args) => {
397
+ const existingError = deps.firstError(args);
398
+ if (existingError) {
399
+ return existingError;
400
+ }
401
+ const [value] = args;
402
+ if (value === undefined) {
403
+ return deps.error(ErrorCode.Value);
404
+ }
405
+ return deps.stringResult(deps.coerceText(value).toLowerCase());
406
+ },
407
+ };
408
+ }
409
+ //# sourceMappingURL=text-core-builtins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-core-builtins.js","sourceRoot":"","sources":["../../src/builtins/text-core-builtins.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { ErrorCode, type CellValue } from "@bilig/protocol";
2
+ import type { TextBuiltin } from "./text.js";
3
+ interface TextFormatBuiltinDeps {
4
+ error: (code: ErrorCode) => CellValue;
5
+ stringResult: (value: string) => CellValue;
6
+ numberResult: (value: number) => CellValue;
7
+ firstError: (args: readonly (CellValue | undefined)[]) => CellValue | undefined;
8
+ coerceText: (value: CellValue) => string;
9
+ coerceNumber: (value: CellValue) => number | undefined;
10
+ coerceInteger: (value: CellValue | undefined, defaultValue: number) => number | CellValue;
11
+ isErrorValue: (value: number | CellValue) => value is CellValue;
12
+ }
13
+ export declare function createTextFormatBuiltins(deps: TextFormatBuiltinDeps): Record<string, TextBuiltin>;
14
+ export {};