liana-core 0.0.26 → 0.0.27

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,457 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.octal = exports.iso_udhr = exports.hexadecimal = exports.fractional_decimal = exports.binary = exports.true_false = exports.scientific_notation = exports.decimal = void 0;
40
+ const _p = __importStar(require("pareto-core/dist/assign"));
41
+ const _p_text_from_list_1 = __importDefault(require("pareto-core/dist/_p_text_from_list"));
42
+ const _p_unreachable_code_path_1 = __importDefault(require("pareto-core/dist/_p_unreachable_code_path"));
43
+ const decimal = ($, abort) => {
44
+ const characters = $;
45
+ let result = 0;
46
+ let isNegative = false;
47
+ let startIndex = 0;
48
+ // _p.iterate(characters, (iterator) => {
49
+ // })
50
+ // Check for empty string
51
+ if (characters.__get_number_of_items() === 0) {
52
+ abort("Empty string is not a valid decimal number");
53
+ }
54
+ const get_character_at = (index) => {
55
+ return characters.__deprecated_get_item_at(index, {
56
+ out_of_bounds: () => abort("index out of bounds")
57
+ });
58
+ };
59
+ // Check for negative sign
60
+ if (characters.__get_number_of_items() > 0 && get_character_at(0) === 45) { // '-'
61
+ isNegative = true;
62
+ startIndex = 1;
63
+ }
64
+ // Parse digits from left to right
65
+ for (let i = startIndex; i < characters.__get_number_of_items(); i++) {
66
+ const charCode = get_character_at(i);
67
+ // Check if character is a digit (48-57 for '0'-'9')
68
+ if (charCode >= 48 && charCode <= 57) {
69
+ const digit = charCode - 48;
70
+ result = result * 10 + digit;
71
+ }
72
+ else {
73
+ // Invalid character
74
+ abort("Invalid character in decimal string");
75
+ }
76
+ }
77
+ return isNegative ? -result : result;
78
+ };
79
+ exports.decimal = decimal;
80
+ const scientific_notation = ($, abort) => {
81
+ const characters = $;
82
+ let result = 0;
83
+ let isNegative = false;
84
+ let startIndex = 0;
85
+ let decimalPart = 0;
86
+ let decimalDivisor = 1;
87
+ let exponent = 0;
88
+ let isExponentNegative = false;
89
+ let hasDecimal = false;
90
+ let inExponent = false;
91
+ const get_character_at = (index) => characters.__deprecated_get_item_at(index, {
92
+ out_of_bounds: () => abort("index out of bounds")
93
+ });
94
+ // Check for negative sign
95
+ if (characters.__get_number_of_items() > 0 && get_character_at(0) === 45) { // '-'
96
+ isNegative = true;
97
+ startIndex = 1;
98
+ }
99
+ // Parse the number
100
+ for (let i = startIndex; i < characters.__get_number_of_items(); i++) {
101
+ const charCode = get_character_at(i);
102
+ if (charCode === 46) { // '.'
103
+ if (hasDecimal || inExponent) {
104
+ abort("Invalid decimal format: multiple decimal points or decimal in exponent");
105
+ }
106
+ hasDecimal = true;
107
+ }
108
+ else if (charCode === 101 || charCode === 69) { // 'e' or 'E'
109
+ if (inExponent) {
110
+ abort("Invalid decimal format: multiple exponent markers");
111
+ }
112
+ inExponent = true;
113
+ // Check for exponent sign
114
+ if (i + 1 < characters.__get_number_of_items()) {
115
+ const nextChar = get_character_at(i + 1);
116
+ if (nextChar === 45) { // '-'
117
+ isExponentNegative = true;
118
+ i++;
119
+ }
120
+ else if (nextChar === 43) { // '+'
121
+ i++;
122
+ }
123
+ }
124
+ }
125
+ else if (charCode >= 48 && charCode <= 57) { // '0'-'9'
126
+ const digit = charCode - 48;
127
+ if (inExponent) {
128
+ exponent = exponent * 10 + digit;
129
+ }
130
+ else if (hasDecimal) {
131
+ decimalPart = decimalPart * 10 + digit;
132
+ decimalDivisor = decimalDivisor * 10;
133
+ }
134
+ else {
135
+ result = result * 10 + digit;
136
+ }
137
+ }
138
+ else {
139
+ abort("Invalid character in decimal string");
140
+ }
141
+ }
142
+ // Combine integer and decimal parts
143
+ let finalResult = result + (decimalPart / decimalDivisor);
144
+ // Apply exponent
145
+ if (isExponentNegative) {
146
+ exponent = -exponent;
147
+ }
148
+ // Apply exponent by multiplying/dividing by 10
149
+ if (exponent > 0) {
150
+ for (let i = 0; i < exponent; i++) {
151
+ finalResult = finalResult * 10;
152
+ }
153
+ }
154
+ else if (exponent < 0) {
155
+ for (let i = 0; i < -exponent; i++) {
156
+ finalResult = finalResult / 10;
157
+ }
158
+ }
159
+ return isNegative ? -finalResult : finalResult;
160
+ };
161
+ exports.scientific_notation = scientific_notation;
162
+ const true_false = ($, abort) => {
163
+ const as_string = (0, _p_text_from_list_1.default)($, ($) => $);
164
+ return as_string === "true"
165
+ ? true
166
+ : as_string === "false"
167
+ ? false
168
+ : abort("HANDLE UNEXPECTED VALUE!");
169
+ };
170
+ exports.true_false = true_false;
171
+ const binary = ($, abort) => {
172
+ const characters = $;
173
+ let result = 0;
174
+ let isNegative = false;
175
+ let startIndex = 0;
176
+ // Check for empty string
177
+ if (characters.__get_number_of_items() === 0) {
178
+ abort("Empty string is not a valid binary number");
179
+ }
180
+ const get_character_at = (index) => characters.__deprecated_get_item_at(index, {
181
+ out_of_bounds: () => abort("index out of bounds")
182
+ });
183
+ // Check for negative sign
184
+ if (characters.__get_number_of_items() > 0 && get_character_at(0) === 45) { // '-'
185
+ isNegative = true;
186
+ startIndex = 1;
187
+ }
188
+ // Check for "0b" prefix - REQUIRE it for binary
189
+ if (characters.__get_number_of_items() <= startIndex + 1 ||
190
+ get_character_at(startIndex) !== 48 || // '0'
191
+ get_character_at(startIndex + 1) !== 98) { // 'b'
192
+ abort("Binary number must have '0b' prefix");
193
+ }
194
+ startIndex += 2;
195
+ // Check if there are digits after the prefix
196
+ if (startIndex >= characters.__get_number_of_items()) {
197
+ abort("Binary number must have digits after '0b' prefix");
198
+ }
199
+ // Parse binary digits from left to right
200
+ for (let i = startIndex; i < characters.__get_number_of_items(); i++) {
201
+ const charCode = get_character_at(i);
202
+ // Check if character is a binary digit (48-49 for '0'-'1')
203
+ if (charCode >= 48 && charCode <= 49) { // '0'-'1'
204
+ const digit = charCode - 48;
205
+ result = result * 2 + digit;
206
+ }
207
+ else {
208
+ // Invalid character
209
+ abort("Invalid character in binary string");
210
+ }
211
+ }
212
+ return isNegative ? -result : result;
213
+ };
214
+ exports.binary = binary;
215
+ const fractional_decimal = ($, abort, $p) => {
216
+ const characters = $;
217
+ let isNegative = false;
218
+ let startIndex = 0;
219
+ let decimalPointIndex = -1;
220
+ // Check for empty string
221
+ if (characters.__get_number_of_items() === 0) {
222
+ abort("Empty string is not a valid fractional decimal number");
223
+ }
224
+ const get_character_at = (index) => {
225
+ return characters.__deprecated_get_item_at(index, {
226
+ out_of_bounds: () => abort("index out of bounds")
227
+ });
228
+ };
229
+ // Check for negative sign
230
+ if (characters.__get_number_of_items() > 0 && get_character_at(0) === 45) { // '-'
231
+ isNegative = true;
232
+ startIndex = 1;
233
+ }
234
+ // Find decimal point and validate characters
235
+ for (let i = startIndex; i < characters.__get_number_of_items(); i++) {
236
+ const charCode = get_character_at(i);
237
+ if (charCode === 46) { // '.'
238
+ if (decimalPointIndex !== -1) {
239
+ abort("Multiple decimal points found");
240
+ }
241
+ decimalPointIndex = i;
242
+ }
243
+ else if (!(charCode >= 48 && charCode <= 57)) {
244
+ abort("Invalid character in fractional decimal string");
245
+ }
246
+ }
247
+ // Must have a decimal point
248
+ if (decimalPointIndex === -1) {
249
+ abort("No decimal point found in fractional decimal string");
250
+ }
251
+ // Check that we have digits before decimal point
252
+ if (decimalPointIndex === startIndex) {
253
+ abort("No digits before decimal point");
254
+ }
255
+ // Calculate number of fractional digits in input
256
+ const inputFractionalDigits = characters.__get_number_of_items() - decimalPointIndex - 1;
257
+ const expectedFractionalDigits = $p['number of fractional digits'];
258
+ // Check that the number of fractional digits matches expected
259
+ if (inputFractionalDigits !== expectedFractionalDigits) {
260
+ abort(`Expected ${expectedFractionalDigits} fractional digits, but found ${inputFractionalDigits}`);
261
+ }
262
+ // Parse integer part
263
+ let result = 0;
264
+ for (let i = startIndex; i < decimalPointIndex; i++) {
265
+ const charCode = get_character_at(i);
266
+ const digit = charCode - 48;
267
+ result = result * 10 + digit;
268
+ }
269
+ // Parse fractional part
270
+ for (let i = decimalPointIndex + 1; i < characters.__get_number_of_items(); i++) {
271
+ const charCode = get_character_at(i);
272
+ const digit = charCode - 48;
273
+ result = result * 10 + digit;
274
+ }
275
+ return isNegative ? -result : result;
276
+ };
277
+ exports.fractional_decimal = fractional_decimal;
278
+ const hexadecimal = ($, abort) => {
279
+ const characters = $;
280
+ let result = 0;
281
+ let isNegative = false;
282
+ let startIndex = 0;
283
+ // Check for empty string
284
+ if (characters.__get_number_of_items() === 0) {
285
+ abort("Empty string is not a valid hexadecimal number");
286
+ }
287
+ const get_character_at = (index) => {
288
+ return characters.__deprecated_get_item_at(index, {
289
+ out_of_bounds: () => abort("index out of bounds")
290
+ });
291
+ };
292
+ // Check for negative sign
293
+ if (characters.__get_number_of_items() > 0 && get_character_at(0) === 45) { // '-'
294
+ isNegative = true;
295
+ startIndex = 1;
296
+ }
297
+ // Check for "0x" prefix - REQUIRE it for hex
298
+ if (characters.__get_number_of_items() <= startIndex + 1 ||
299
+ get_character_at(startIndex) !== 48 || // '0'
300
+ get_character_at(startIndex + 1) !== 120) { // 'x'
301
+ abort("Hexadecimal number must have '0x' prefix");
302
+ }
303
+ startIndex += 2;
304
+ // Check if there are digits after the prefix
305
+ if (startIndex >= characters.__get_number_of_items()) {
306
+ abort("Hexadecimal number must have digits after '0x' prefix");
307
+ }
308
+ // Parse hex digits from left to right
309
+ for (let i = startIndex; i < characters.__get_number_of_items(); i++) {
310
+ const charCode = get_character_at(i);
311
+ let digit;
312
+ // Check if character is a hex digit
313
+ if (charCode >= 48 && charCode <= 57) { // '0'-'9'
314
+ digit = charCode - 48;
315
+ }
316
+ else if (charCode >= 65 && charCode <= 70) { // 'A'-'F'
317
+ digit = charCode - 65 + 10;
318
+ }
319
+ else if (charCode >= 97 && charCode <= 102) { // 'a'-'f'
320
+ digit = charCode - 97 + 10;
321
+ }
322
+ else {
323
+ // Invalid character
324
+ return abort("Invalid character in hexadecimal string");
325
+ }
326
+ result = result * 16 + digit;
327
+ }
328
+ return isNegative ? -result : result;
329
+ };
330
+ exports.hexadecimal = hexadecimal;
331
+ /**
332
+ *
333
+ * uhdr is a numerical representation of dates where day 0 is 1948-12-10 (the date of the adoption of the Universal Declaration of Human Rights)
334
+ *
335
+ * This function converts an ISO 8601 date string (YYYY-MM-DD) to a udhr day number
336
+ */
337
+ const iso_udhr = ($, abort) => {
338
+ const iso_day_0_offset = -711471; // the number of days that iso day 1 (0001-01-01) is offset relative to udhr day 0 (1948-12-10)
339
+ const month_day_table_normal = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334];
340
+ const month_day_table_leap = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335];
341
+ const is_leap_year = (year) => (year % 4 === 0 && year % 100 !== 0) || (year % 400 === 0);
342
+ const characters = $;
343
+ const parse_iso_date = (characters) => {
344
+ const get_certain_character_at = (characters, index) => {
345
+ return characters.__deprecated_get_possible_item_at(index).__decide(($) => $, () => abort("index out of bounds"));
346
+ };
347
+ const string_to_number = (characters, start, end) => {
348
+ let result = 0;
349
+ for (let i = start; i < end; i++) {
350
+ const digit = get_certain_character_at(characters, i) - 48;
351
+ if (digit < 0 || digit > 9)
352
+ return abort("invalid date format");
353
+ result = result * 10 + digit;
354
+ }
355
+ return result;
356
+ };
357
+ const dash = 45;
358
+ //validate format
359
+ if (characters.__get_number_of_items() !== 10) { // YYYY-MM-DD
360
+ return abort("invalid date format");
361
+ }
362
+ if (get_certain_character_at(characters, 4) !== dash) { // -
363
+ return abort("invalid date format");
364
+ }
365
+ if (get_certain_character_at(characters, 7) !== dash) { // -
366
+ return abort("invalid date format");
367
+ }
368
+ return {
369
+ year: string_to_number(characters, 0, 4),
370
+ month: string_to_number(characters, 5, 7),
371
+ day: string_to_number(characters, 8, 10)
372
+ };
373
+ };
374
+ const iso_date = parse_iso_date(characters);
375
+ // Validate month (1-12)
376
+ if (iso_date.month < 1 || iso_date.month > 12) {
377
+ abort(`Invalid month: ${iso_date.month}. Month must be between 1 and 12`);
378
+ }
379
+ // Validate day (1-31, depending on month)
380
+ if (iso_date.day < 1) {
381
+ abort(`Invalid day: ${iso_date.day}. Day must be at least 1`);
382
+ }
383
+ // Check days per month
384
+ const days_in_month = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
385
+ let max_day = days_in_month[iso_date.month - 1];
386
+ // Adjust for leap year in February
387
+ if (iso_date.month === 2 && is_leap_year(iso_date.year)) {
388
+ max_day = 29;
389
+ }
390
+ if (iso_date.day > max_day) {
391
+ abort(`Invalid day: ${iso_date.day}. Month ${iso_date.month} has at most ${max_day} days`);
392
+ }
393
+ const full_years = iso_date.year - 1;
394
+ const leap_days_before_current_year = +_p.number.integer.divide(full_years, 4, {
395
+ divided_by_zero: () => (0, _p_unreachable_code_path_1.default)("the divisor is hardcoded to 4")
396
+ })
397
+ - _p.number.integer.divide(full_years, 100, {
398
+ divided_by_zero: () => (0, _p_unreachable_code_path_1.default)("the divisor is hardcoded to 100")
399
+ })
400
+ + _p.number.integer.divide(full_years, 400, {
401
+ divided_by_zero: () => (0, _p_unreachable_code_path_1.default)("the divisor is hardcoded to 400")
402
+ });
403
+ const total_days_before_current_year = full_years * 365 + leap_days_before_current_year;
404
+ const month_days = is_leap_year(iso_date.year) ? month_day_table_leap : month_day_table_normal;
405
+ const days_in_current_year = month_days[iso_date.month - 1] + iso_date.day;
406
+ // Calculate total days since January 1, year 1 CE
407
+ const total_days_since_iso_year_1 = total_days_before_current_year + days_in_current_year;
408
+ // Convert to UDHR day number (add days from 1948-12-10)
409
+ const udhr_day = total_days_since_iso_year_1 + iso_day_0_offset;
410
+ return udhr_day;
411
+ };
412
+ exports.iso_udhr = iso_udhr;
413
+ const octal = ($, abort) => {
414
+ const characters = $;
415
+ let result = 0;
416
+ let isNegative = false;
417
+ let startIndex = 0;
418
+ // Check for empty string
419
+ if (characters.__get_number_of_items() === 0) {
420
+ abort("Empty string is not a valid octal number");
421
+ }
422
+ const get_character_at = (index) => characters.__deprecated_get_item_at(index, {
423
+ out_of_bounds: () => abort("Index out of bounds while parsing octal string"),
424
+ });
425
+ // Check for negative sign
426
+ if (characters.__get_number_of_items() > 0 && get_character_at(0) === 45) { // '-'
427
+ isNegative = true;
428
+ startIndex = 1;
429
+ }
430
+ // Check for "0o" prefix - REQUIRE it for octal
431
+ if (characters.__get_number_of_items() <= startIndex + 1 ||
432
+ get_character_at(startIndex) !== 48 || // '0'
433
+ get_character_at(startIndex + 1) !== 111) { // 'o'
434
+ abort("Octal number must have '0o' prefix");
435
+ }
436
+ startIndex += 2;
437
+ // Check if there are digits after the prefix
438
+ if (startIndex >= characters.__get_number_of_items()) {
439
+ abort("Octal number must have digits after '0o' prefix");
440
+ }
441
+ // Parse octal digits from left to right
442
+ for (let i = startIndex; i < characters.__get_number_of_items(); i++) {
443
+ const charCode = get_character_at(i);
444
+ // Check if character is an octal digit (48-55 for '0'-'7')
445
+ if (charCode >= 48 && charCode <= 55) { // '0'-'7'
446
+ const digit = charCode - 48;
447
+ result = result * 8 + digit;
448
+ }
449
+ else {
450
+ // Invalid character
451
+ abort("Invalid character in octal string");
452
+ }
453
+ }
454
+ return isNegative ? -result : result;
455
+ };
456
+ exports.octal = octal;
457
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdF9vZl9jaGFyYWN0ZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2ltcGxlbWVudGF0aW9uL21hbnVhbC9yZWZpbmVycy9wcmltaXRpdmVzL2xpc3Rfb2ZfY2hhcmFjdGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSw0REFBNkM7QUFFN0MsMkZBQWtFO0FBQ2xFLHlHQUFnRjtBQUt6RSxNQUFNLE9BQU8sR0FBMEQsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUU7SUFDdkYsTUFBTSxVQUFVLEdBQUcsQ0FBQyxDQUFBO0lBQ3BCLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQTtJQUNkLElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQTtJQUN0QixJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUE7SUFFbEIseUNBQXlDO0lBRXpDLEtBQUs7SUFFTCx5QkFBeUI7SUFDekIsSUFBSSxVQUFVLENBQUMscUJBQXFCLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUMzQyxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQTtJQUN2RCxDQUFDO0lBRUQsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEtBQWEsRUFBVSxFQUFFO1FBQy9DLE9BQU8sVUFBVSxDQUFDLHdCQUF3QixDQUN0QyxLQUFLLEVBQ0w7WUFDSSxhQUFhLEVBQUUsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDO1NBQ3BELENBQ0osQ0FBQTtJQUNMLENBQUMsQ0FBQTtJQUVELDBCQUEwQjtJQUMxQixJQUFJLFVBQVUsQ0FBQyxxQkFBcUIsRUFBRSxHQUFHLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU07UUFDOUUsVUFBVSxHQUFHLElBQUksQ0FBQTtRQUNqQixVQUFVLEdBQUcsQ0FBQyxDQUFBO0lB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
@@ -0,0 +1,12 @@
1
+ import * as _pi from 'pareto-core/dist/interface';
2
+ import * as d_in from "astn-core/dist/interface/generated/liana/schemas/parse_tree/data";
3
+ import * as d_out from "../../../../interface/to_be_generated/unmarshalled";
4
+ import * as d_function from "../../../../interface/to_be_generated/unmarshall";
5
+ export type Number = _pi.Refiner_With_Parameter<d_out.Number, d_function.Error, d_in.Value, {
6
+ 'type': ['decimal', null];
7
+ }>;
8
+ export type Boolean = _pi.Refiner_With_Parameter<d_out.Boolean, d_function.Error, d_in.Value, {
9
+ 'type': ['true/false', null];
10
+ }>;
11
+ export declare const Number: Number;
12
+ export declare const Boolean: Boolean;
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.Boolean = exports.Number = void 0;
40
+ const _p_list_from_text_1 = __importDefault(require("pareto-core/dist/_p_list_from_text"));
41
+ //dependencies
42
+ const t_parse_tree_to_location = __importStar(require("astn-core/dist/implementation/manual/transformers/parse_tree/location"));
43
+ const r_astn_unmarshalled_from_parse_tree = __importStar(require("astn-core/dist/implementation/manual/refiners/unmarshalled/parse_tree"));
44
+ const t_from_loc = __importStar(require("../primitives/list_of_characters"));
45
+ const Number = ($, abort) => {
46
+ const value = $;
47
+ const as_loc = (0, _p_list_from_text_1.default)(r_astn_unmarshalled_from_parse_tree.Text($, ($) => abort(['astn', $])).value, ($) => $);
48
+ return t_from_loc.decimal(as_loc, ($) => abort(['liana', {
49
+ 'type': ['not a valid number', {
50
+ 'expected format': "-?(0|[1-9][0-9]*)"
51
+ }],
52
+ range: t_parse_tree_to_location.Value(value)
53
+ }]));
54
+ };
55
+ exports.Number = Number;
56
+ const Boolean = ($, abort) => {
57
+ const value = $;
58
+ const as_loc = (0, _p_list_from_text_1.default)(r_astn_unmarshalled_from_parse_tree.Text($, ($) => abort(['astn', $])).value, ($) => $);
59
+ return t_from_loc.true_false(as_loc, ($) => abort(['liana', {
60
+ 'type': ['not a valid boolean', {
61
+ 'expected format': "true|false"
62
+ }],
63
+ range: t_parse_tree_to_location.Value(value)
64
+ }]));
65
+ };
66
+ exports.Boolean = Boolean;
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN0bl9wYXJzZV90cmVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2ltcGxlbWVudGF0aW9uL21hbnVhbC9yZWZpbmVycy91bm1hcnNoYWxsZWQvYXN0bl9wYXJzZV90cmVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLDJGQUFrRTtBQU1sRSxjQUFjO0FBQ2QsZ0lBQWlIO0FBQ2pILDJJQUE0SDtBQUM1SCw2RUFBOEQ7QUFzQnZELE1BQU0sTUFBTSxHQUFXLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFO0lBQ3ZDLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQTtJQUVmLE1BQU0sTUFBTSxHQUFHLElBQUEsMkJBQWlCLEVBQzVCLG1DQUFtQyxDQUFDLElBQUksQ0FDcEMsQ0FBQyxFQUNELENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FDNUIsQ0FBQyxLQUFLLEVBQ1AsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FDWCxDQUFBO0lBRUQsT0FBTyxVQUFVLENBQUMsT0FBTyxDQUNyQixNQUFNLEVBQ04sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRTtZQUNuQixNQUFNLEVBQUUsQ0FBQyxvQkFBb0IsRUFBRTtvQkFDM0IsaUJBQWlCLEVBQUUsbUJBQW1CO2lCQUN6QyxDQUFDO1lBQ0YsS0FBSyxFQUFFLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7U0FDL0MsQ0FBQyxDQUFDLENBQ04sQ0FBQTtBQUNMLENBQUMsQ0FBQTtBQXBCWSxRQUFBLE1BQU0sVUFvQmxCO0FBRU0sTUFBTSxPQUFPLEdBQVksQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUU7SUFDekMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFBO0lBRWYsTUFBTSxNQUFNLEdBQUcsSUFBQSwyQkFBaUIsRUFDNUIsbUNBQW1DLENBQUMsSUFBSSxDQUNwQyxDQUFDLEVBQ0QsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUM1QixDQUFDLEtBQUssRUFDUCxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUNYLENBQUE7SUFFRCxPQUFPLFVBQVUsQ0FBQyxVQUFVLENBQ3hCLE1BQU0sRUFDTixDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxFQUFFO1lBQ25CLE1BQU0sRUFBRSxDQUFDLHFCQUFxQixFQUFFO29CQUM1QixpQkFBaUIsRUFBRSxZQUFZO2lCQUNsQyxDQUFDO1lBQ0YsS0FBSyxFQUFFLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7U0FDL0MsQ0FBQyxDQUFDLENBQ04sQ0FBQTtBQUNMLENBQUMsQ0FBQTtBQXBCWSxRQUFBLE9BQU8sV0FvQm5CIn0=
@@ -46,10 +46,14 @@ const Error = ($) => sh.ph.composed([
46
46
  _p.decide.state($.type, ($) => {
47
47
  switch ($[0]) {
48
48
  case 'not a valid number': return _p.ss($, ($) => sh.ph.composed([
49
- sh.ph.literal("not a valid number")
49
+ sh.ph.literal("not a valid number, expected: '"),
50
+ sh.ph.literal($['expected format']),
51
+ sh.ph.literal("'")
50
52
  ]));
51
53
  case 'not a valid boolean': return _p.ss($, ($) => sh.ph.composed([
52
- sh.ph.literal("not a valid boolean")
54
+ sh.ph.literal("not a valid boolean, expected: '"),
55
+ sh.ph.literal($['expected format']),
56
+ sh.ph.literal("'")
53
57
  ]));
54
58
  case 'unknown option': return _p.ss($, ($) => sh.ph.composed([
55
59
  sh.ph.literal("unknown option: '"),
@@ -99,4 +103,4 @@ exports.Error = Error;
99
103
  // default: return _p.au($[0])
100
104
  // }
101
105
  // })
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm91bnRhaW5fcGVuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2ltcGxlbWVudGF0aW9uL21hbnVhbC90cmFuc2Zvcm1lcnMvdW5tYXJzaGFsbC9mb3VudGFpbl9wZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNERBQTZDO0FBTTdDLGNBQWM7QUFDZCw2SUFBOEg7QUFFOUgsWUFBWTtBQUNaLDhFQUErRDtBQUV4RCxNQUFNLEtBQUssR0FBRyxDQUFDLENBQWEsRUFBZ0IsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDO0lBQ2pFLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO1FBQ3JCLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDWCxLQUFLLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQUNoRCxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7b0JBQzFCLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7d0JBQ1gsS0FBSyxvQkFBb0IsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDOzRCQUM3RCxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQzt5QkFDdEMsQ0FBQyxDQUFDLENBQUE7d0JBQ0gsS0FBSyxxQkFBcUIsQ0FBQyxDQUFD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
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm91bnRhaW5fcGVuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2ltcGxlbWVudGF0aW9uL21hbnVhbC90cmFuc2Zvcm1lcnMvdW5tYXJzaGFsbC9mb3VudGFpbl9wZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNERBQTZDO0FBTTdDLGNBQWM7QUFDZCw2SUFBOEg7QUFFOUgsWUFBWTtBQUNaLDhFQUErRDtBQUV4RCxNQUFNLEtBQUssR0FBRyxDQUFDLENBQWEsRUFBZ0IsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDO0lBQ2pFLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO1FBQ3JCLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDWCxLQUFLLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQUNoRCxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7b0JBQzFCLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7d0JBQ1gsS0FBSyxvQkFBb0IsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDOzRCQUM3RCxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxpQ0FBaUMsQ0FBQzs0QkFDaEQsRUFBRSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGlC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
@@ -3,7 +3,17 @@ import * as d_location from "astn-core/dist/interface/generated/liana/schemas/lo
3
3
  export type Error = readonly ['astn', d_astn_unmarshall.Error] | readonly [
4
4
  'liana',
5
5
  {
6
- 'type': readonly ['not a valid number', string] | readonly ['not a valid boolean', null] | readonly ['unknown option', string];
6
+ 'type': readonly [
7
+ 'not a valid number',
8
+ {
9
+ 'expected format': string;
10
+ }
11
+ ] | readonly [
12
+ 'not a valid boolean',
13
+ {
14
+ 'expected format': string;
15
+ }
16
+ ] | readonly ['unknown option', string];
7
17
  'range': d_location.Range;
8
18
  }
9
19
  ];
@@ -0,0 +1,2 @@
1
+ export type Number = number;
2
+ export type Boolean = boolean;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5tYXJzaGFsbGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2ludGVyZmFjZS90b19iZV9nZW5lcmF0ZWQvdW5tYXJzaGFsbGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "liana-core",
3
- "version": "0.0.26",
3
+ "version": "0.0.27",
4
4
  "author": "Corno",
5
5
  "license": "Apache-2.0",
6
6
  "main": "./dist/index.js",
@@ -9,7 +9,7 @@
9
9
  "dist"
10
10
  ],
11
11
  "dependencies": {
12
- "astn-core": "^0.5.53",
12
+ "astn-core": "^0.5.54",
13
13
  "pareto-core": "^0.1.53"
14
14
  }
15
15
  }
@@ -1,474 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.octal = exports.iso_udhr = exports.hexadecimal = exports.fractional_decimal = exports.binary = exports.true_false = exports.scientific_notation = exports.decimal = void 0;
40
- const _p = __importStar(require("pareto-core/dist/assign"));
41
- const _p_text_from_list_1 = __importDefault(require("pareto-core/dist/_p_text_from_list"));
42
- const _p_unreachable_code_path_1 = __importDefault(require("pareto-core/dist/_p_unreachable_code_path"));
43
- // export type Decimal = _pi.Refiner<d_out.Decimal, d_function.Error, d_in.Value>
44
- // export const Decimal: Decimal = ($, abort) => {
45
- // const value = $
46
- // return deserialize_decimal(
47
- // _p_list_from_text(
48
- // r_astn_unmarshalled_from_parse_tree.Text(
49
- // $,
50
- // ($) => abort(['astn', $])
51
- // ).value,
52
- // ($) => $
53
- // ),
54
- // ($) => abort(['liana', {
55
- // 'type': ['not a valid number', $],
56
- // range: t_parse_tree_to_location.Value(value)
57
- // }]),
58
- // )
59
- // }
60
- const decimal = ($, abort) => {
61
- const characters = $;
62
- let result = 0;
63
- let isNegative = false;
64
- let startIndex = 0;
65
- // _p.iterate(characters, (iterator) => {
66
- // })
67
- // Check for empty string
68
- if (characters.__get_number_of_items() === 0) {
69
- abort("Empty string is not a valid decimal number");
70
- }
71
- const get_character_at = (index) => {
72
- return characters.__deprecated_get_item_at(index, {
73
- out_of_bounds: () => abort("index out of bounds")
74
- });
75
- };
76
- // Check for negative sign
77
- if (characters.__get_number_of_items() > 0 && get_character_at(0) === 45) { // '-'
78
- isNegative = true;
79
- startIndex = 1;
80
- }
81
- // Parse digits from left to right
82
- for (let i = startIndex; i < characters.__get_number_of_items(); i++) {
83
- const charCode = get_character_at(i);
84
- // Check if character is a digit (48-57 for '0'-'9')
85
- if (charCode >= 48 && charCode <= 57) {
86
- const digit = charCode - 48;
87
- result = result * 10 + digit;
88
- }
89
- else {
90
- // Invalid character
91
- abort("Invalid character in decimal string");
92
- }
93
- }
94
- return isNegative ? -result : result;
95
- };
96
- exports.decimal = decimal;
97
- const scientific_notation = ($, abort) => {
98
- const characters = $;
99
- let result = 0;
100
- let isNegative = false;
101
- let startIndex = 0;
102
- let decimalPart = 0;
103
- let decimalDivisor = 1;
104
- let exponent = 0;
105
- let isExponentNegative = false;
106
- let hasDecimal = false;
107
- let inExponent = false;
108
- const get_character_at = (index) => characters.__deprecated_get_item_at(index, {
109
- out_of_bounds: () => abort("index out of bounds")
110
- });
111
- // Check for negative sign
112
- if (characters.__get_number_of_items() > 0 && get_character_at(0) === 45) { // '-'
113
- isNegative = true;
114
- startIndex = 1;
115
- }
116
- // Parse the number
117
- for (let i = startIndex; i < characters.__get_number_of_items(); i++) {
118
- const charCode = get_character_at(i);
119
- if (charCode === 46) { // '.'
120
- if (hasDecimal || inExponent) {
121
- abort("Invalid decimal format: multiple decimal points or decimal in exponent");
122
- }
123
- hasDecimal = true;
124
- }
125
- else if (charCode === 101 || charCode === 69) { // 'e' or 'E'
126
- if (inExponent) {
127
- abort("Invalid decimal format: multiple exponent markers");
128
- }
129
- inExponent = true;
130
- // Check for exponent sign
131
- if (i + 1 < characters.__get_number_of_items()) {
132
- const nextChar = get_character_at(i + 1);
133
- if (nextChar === 45) { // '-'
134
- isExponentNegative = true;
135
- i++;
136
- }
137
- else if (nextChar === 43) { // '+'
138
- i++;
139
- }
140
- }
141
- }
142
- else if (charCode >= 48 && charCode <= 57) { // '0'-'9'
143
- const digit = charCode - 48;
144
- if (inExponent) {
145
- exponent = exponent * 10 + digit;
146
- }
147
- else if (hasDecimal) {
148
- decimalPart = decimalPart * 10 + digit;
149
- decimalDivisor = decimalDivisor * 10;
150
- }
151
- else {
152
- result = result * 10 + digit;
153
- }
154
- }
155
- else {
156
- abort("Invalid character in decimal string");
157
- }
158
- }
159
- // Combine integer and decimal parts
160
- let finalResult = result + (decimalPart / decimalDivisor);
161
- // Apply exponent
162
- if (isExponentNegative) {
163
- exponent = -exponent;
164
- }
165
- // Apply exponent by multiplying/dividing by 10
166
- if (exponent > 0) {
167
- for (let i = 0; i < exponent; i++) {
168
- finalResult = finalResult * 10;
169
- }
170
- }
171
- else if (exponent < 0) {
172
- for (let i = 0; i < -exponent; i++) {
173
- finalResult = finalResult / 10;
174
- }
175
- }
176
- return isNegative ? -finalResult : finalResult;
177
- };
178
- exports.scientific_notation = scientific_notation;
179
- const true_false = ($, abort) => {
180
- const as_string = (0, _p_text_from_list_1.default)($, ($) => $);
181
- return as_string === "true"
182
- ? true
183
- : as_string === "false"
184
- ? false
185
- : abort("HANDLE UNEXPECTED VALUE!");
186
- };
187
- exports.true_false = true_false;
188
- const binary = ($, abort) => {
189
- const characters = $;
190
- let result = 0;
191
- let isNegative = false;
192
- let startIndex = 0;
193
- // Check for empty string
194
- if (characters.__get_number_of_items() === 0) {
195
- abort("Empty string is not a valid binary number");
196
- }
197
- const get_character_at = (index) => characters.__deprecated_get_item_at(index, {
198
- out_of_bounds: () => abort("index out of bounds")
199
- });
200
- // Check for negative sign
201
- if (characters.__get_number_of_items() > 0 && get_character_at(0) === 45) { // '-'
202
- isNegative = true;
203
- startIndex = 1;
204
- }
205
- // Check for "0b" prefix - REQUIRE it for binary
206
- if (characters.__get_number_of_items() <= startIndex + 1 ||
207
- get_character_at(startIndex) !== 48 || // '0'
208
- get_character_at(startIndex + 1) !== 98) { // 'b'
209
- abort("Binary number must have '0b' prefix");
210
- }
211
- startIndex += 2;
212
- // Check if there are digits after the prefix
213
- if (startIndex >= characters.__get_number_of_items()) {
214
- abort("Binary number must have digits after '0b' prefix");
215
- }
216
- // Parse binary digits from left to right
217
- for (let i = startIndex; i < characters.__get_number_of_items(); i++) {
218
- const charCode = get_character_at(i);
219
- // Check if character is a binary digit (48-49 for '0'-'1')
220
- if (charCode >= 48 && charCode <= 49) { // '0'-'1'
221
- const digit = charCode - 48;
222
- result = result * 2 + digit;
223
- }
224
- else {
225
- // Invalid character
226
- abort("Invalid character in binary string");
227
- }
228
- }
229
- return isNegative ? -result : result;
230
- };
231
- exports.binary = binary;
232
- const fractional_decimal = ($, abort, $p) => {
233
- const characters = $;
234
- let isNegative = false;
235
- let startIndex = 0;
236
- let decimalPointIndex = -1;
237
- // Check for empty string
238
- if (characters.__get_number_of_items() === 0) {
239
- abort("Empty string is not a valid fractional decimal number");
240
- }
241
- const get_character_at = (index) => {
242
- return characters.__deprecated_get_item_at(index, {
243
- out_of_bounds: () => abort("index out of bounds")
244
- });
245
- };
246
- // Check for negative sign
247
- if (characters.__get_number_of_items() > 0 && get_character_at(0) === 45) { // '-'
248
- isNegative = true;
249
- startIndex = 1;
250
- }
251
- // Find decimal point and validate characters
252
- for (let i = startIndex; i < characters.__get_number_of_items(); i++) {
253
- const charCode = get_character_at(i);
254
- if (charCode === 46) { // '.'
255
- if (decimalPointIndex !== -1) {
256
- abort("Multiple decimal points found");
257
- }
258
- decimalPointIndex = i;
259
- }
260
- else if (!(charCode >= 48 && charCode <= 57)) {
261
- abort("Invalid character in fractional decimal string");
262
- }
263
- }
264
- // Must have a decimal point
265
- if (decimalPointIndex === -1) {
266
- abort("No decimal point found in fractional decimal string");
267
- }
268
- // Check that we have digits before decimal point
269
- if (decimalPointIndex === startIndex) {
270
- abort("No digits before decimal point");
271
- }
272
- // Calculate number of fractional digits in input
273
- const inputFractionalDigits = characters.__get_number_of_items() - decimalPointIndex - 1;
274
- const expectedFractionalDigits = $p['number of fractional digits'];
275
- // Check that the number of fractional digits matches expected
276
- if (inputFractionalDigits !== expectedFractionalDigits) {
277
- abort(`Expected ${expectedFractionalDigits} fractional digits, but found ${inputFractionalDigits}`);
278
- }
279
- // Parse integer part
280
- let result = 0;
281
- for (let i = startIndex; i < decimalPointIndex; i++) {
282
- const charCode = get_character_at(i);
283
- const digit = charCode - 48;
284
- result = result * 10 + digit;
285
- }
286
- // Parse fractional part
287
- for (let i = decimalPointIndex + 1; i < characters.__get_number_of_items(); i++) {
288
- const charCode = get_character_at(i);
289
- const digit = charCode - 48;
290
- result = result * 10 + digit;
291
- }
292
- return isNegative ? -result : result;
293
- };
294
- exports.fractional_decimal = fractional_decimal;
295
- const hexadecimal = ($, abort) => {
296
- const characters = $;
297
- let result = 0;
298
- let isNegative = false;
299
- let startIndex = 0;
300
- // Check for empty string
301
- if (characters.__get_number_of_items() === 0) {
302
- abort("Empty string is not a valid hexadecimal number");
303
- }
304
- const get_character_at = (index) => {
305
- return characters.__deprecated_get_item_at(index, {
306
- out_of_bounds: () => abort("index out of bounds")
307
- });
308
- };
309
- // Check for negative sign
310
- if (characters.__get_number_of_items() > 0 && get_character_at(0) === 45) { // '-'
311
- isNegative = true;
312
- startIndex = 1;
313
- }
314
- // Check for "0x" prefix - REQUIRE it for hex
315
- if (characters.__get_number_of_items() <= startIndex + 1 ||
316
- get_character_at(startIndex) !== 48 || // '0'
317
- get_character_at(startIndex + 1) !== 120) { // 'x'
318
- abort("Hexadecimal number must have '0x' prefix");
319
- }
320
- startIndex += 2;
321
- // Check if there are digits after the prefix
322
- if (startIndex >= characters.__get_number_of_items()) {
323
- abort("Hexadecimal number must have digits after '0x' prefix");
324
- }
325
- // Parse hex digits from left to right
326
- for (let i = startIndex; i < characters.__get_number_of_items(); i++) {
327
- const charCode = get_character_at(i);
328
- let digit;
329
- // Check if character is a hex digit
330
- if (charCode >= 48 && charCode <= 57) { // '0'-'9'
331
- digit = charCode - 48;
332
- }
333
- else if (charCode >= 65 && charCode <= 70) { // 'A'-'F'
334
- digit = charCode - 65 + 10;
335
- }
336
- else if (charCode >= 97 && charCode <= 102) { // 'a'-'f'
337
- digit = charCode - 97 + 10;
338
- }
339
- else {
340
- // Invalid character
341
- return abort("Invalid character in hexadecimal string");
342
- }
343
- result = result * 16 + digit;
344
- }
345
- return isNegative ? -result : result;
346
- };
347
- exports.hexadecimal = hexadecimal;
348
- /**
349
- *
350
- * uhdr is a numerical representation of dates where day 0 is 1948-12-10 (the date of the adoption of the Universal Declaration of Human Rights)
351
- *
352
- * This function converts an ISO 8601 date string (YYYY-MM-DD) to a udhr day number
353
- */
354
- const iso_udhr = ($, abort) => {
355
- const iso_day_0_offset = -711471; // the number of days that iso day 1 (0001-01-01) is offset relative to udhr day 0 (1948-12-10)
356
- const month_day_table_normal = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334];
357
- const month_day_table_leap = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335];
358
- const is_leap_year = (year) => (year % 4 === 0 && year % 100 !== 0) || (year % 400 === 0);
359
- const characters = $;
360
- const parse_iso_date = (characters) => {
361
- const get_certain_character_at = (characters, index) => {
362
- return characters.__deprecated_get_possible_item_at(index).__decide(($) => $, () => abort("index out of bounds"));
363
- };
364
- const string_to_number = (characters, start, end) => {
365
- let result = 0;
366
- for (let i = start; i < end; i++) {
367
- const digit = get_certain_character_at(characters, i) - 48;
368
- if (digit < 0 || digit > 9)
369
- return abort("invalid date format");
370
- result = result * 10 + digit;
371
- }
372
- return result;
373
- };
374
- const dash = 45;
375
- //validate format
376
- if (characters.__get_number_of_items() !== 10) { // YYYY-MM-DD
377
- return abort("invalid date format");
378
- }
379
- if (get_certain_character_at(characters, 4) !== dash) { // -
380
- return abort("invalid date format");
381
- }
382
- if (get_certain_character_at(characters, 7) !== dash) { // -
383
- return abort("invalid date format");
384
- }
385
- return {
386
- year: string_to_number(characters, 0, 4),
387
- month: string_to_number(characters, 5, 7),
388
- day: string_to_number(characters, 8, 10)
389
- };
390
- };
391
- const iso_date = parse_iso_date(characters);
392
- // Validate month (1-12)
393
- if (iso_date.month < 1 || iso_date.month > 12) {
394
- abort(`Invalid month: ${iso_date.month}. Month must be between 1 and 12`);
395
- }
396
- // Validate day (1-31, depending on month)
397
- if (iso_date.day < 1) {
398
- abort(`Invalid day: ${iso_date.day}. Day must be at least 1`);
399
- }
400
- // Check days per month
401
- const days_in_month = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
402
- let max_day = days_in_month[iso_date.month - 1];
403
- // Adjust for leap year in February
404
- if (iso_date.month === 2 && is_leap_year(iso_date.year)) {
405
- max_day = 29;
406
- }
407
- if (iso_date.day > max_day) {
408
- abort(`Invalid day: ${iso_date.day}. Month ${iso_date.month} has at most ${max_day} days`);
409
- }
410
- const full_years = iso_date.year - 1;
411
- const leap_days_before_current_year = +_p.number.integer.divide(full_years, 4, {
412
- divided_by_zero: () => (0, _p_unreachable_code_path_1.default)("the divisor is hardcoded to 4")
413
- })
414
- - _p.number.integer.divide(full_years, 100, {
415
- divided_by_zero: () => (0, _p_unreachable_code_path_1.default)("the divisor is hardcoded to 100")
416
- })
417
- + _p.number.integer.divide(full_years, 400, {
418
- divided_by_zero: () => (0, _p_unreachable_code_path_1.default)("the divisor is hardcoded to 400")
419
- });
420
- const total_days_before_current_year = full_years * 365 + leap_days_before_current_year;
421
- const month_days = is_leap_year(iso_date.year) ? month_day_table_leap : month_day_table_normal;
422
- const days_in_current_year = month_days[iso_date.month - 1] + iso_date.day;
423
- // Calculate total days since January 1, year 1 CE
424
- const total_days_since_iso_year_1 = total_days_before_current_year + days_in_current_year;
425
- // Convert to UDHR day number (add days from 1948-12-10)
426
- const udhr_day = total_days_since_iso_year_1 + iso_day_0_offset;
427
- return udhr_day;
428
- };
429
- exports.iso_udhr = iso_udhr;
430
- const octal = ($, abort) => {
431
- const characters = $;
432
- let result = 0;
433
- let isNegative = false;
434
- let startIndex = 0;
435
- // Check for empty string
436
- if (characters.__get_number_of_items() === 0) {
437
- abort("Empty string is not a valid octal number");
438
- }
439
- const get_character_at = (index) => characters.__deprecated_get_item_at(index, {
440
- out_of_bounds: () => abort("Index out of bounds while parsing octal string"),
441
- });
442
- // Check for negative sign
443
- if (characters.__get_number_of_items() > 0 && get_character_at(0) === 45) { // '-'
444
- isNegative = true;
445
- startIndex = 1;
446
- }
447
- // Check for "0o" prefix - REQUIRE it for octal
448
- if (characters.__get_number_of_items() <= startIndex + 1 ||
449
- get_character_at(startIndex) !== 48 || // '0'
450
- get_character_at(startIndex + 1) !== 111) { // 'o'
451
- abort("Octal number must have '0o' prefix");
452
- }
453
- startIndex += 2;
454
- // Check if there are digits after the prefix
455
- if (startIndex >= characters.__get_number_of_items()) {
456
- abort("Octal number must have digits after '0o' prefix");
457
- }
458
- // Parse octal digits from left to right
459
- for (let i = startIndex; i < characters.__get_number_of_items(); i++) {
460
- const charCode = get_character_at(i);
461
- // Check if character is an octal digit (48-55 for '0'-'7')
462
- if (charCode >= 48 && charCode <= 55) { // '0'-'7'
463
- const digit = charCode - 48;
464
- result = result * 8 + digit;
465
- }
466
- else {
467
- // Invalid character
468
- abort("Invalid character in octal string");
469
- }
470
- }
471
- return isNegative ? -result : result;
472
- };
473
- exports.octal = octal;
474
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9pbXBsZW1lbnRhdGlvbi9tYW51YWwvcmVmaW5lcnMvcHJpbWl0aXZlcy90ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLDREQUE2QztBQVc3QywyRkFBa0U7QUFDbEUseUdBQWdGO0FBRWhGLGlGQUFpRjtBQUVqRixrREFBa0Q7QUFDbEQsc0JBQXNCO0FBRXRCLGtDQUFrQztBQUNsQyw2QkFBNkI7QUFDN0Isd0RBQXdEO0FBQ3hELHFCQUFxQjtBQUNyQiw0Q0FBNEM7QUFDNUMsdUJBQXVCO0FBQ3ZCLHVCQUF1QjtBQUN2QixhQUFhO0FBQ2IsbUNBQW1DO0FBQ25DLGlEQUFpRDtBQUNqRCwyREFBMkQ7QUFDM0QsZUFBZTtBQUNmLFFBQVE7QUFDUixJQUFJO0FBRUcsTUFBTSxPQUFPLEdBQTBELENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFO0lBQ3ZGLE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQTtJQUNwQixJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUE7SUFDZCxJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUE7SUFDdEIsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFBO0lBRWxCLHlDQUF5QztJQUV6QyxLQUFLO0lBRUwseUJBQXlCO0lBQ3pCLElBQUksVUFBVSxDQUFDLHFCQUFxQixFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDM0MsS0FBSyxDQUFDLDRDQUE0QyxDQUFDLENBQUE7SUFDdkQsQ0FBQztJQUVELE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxLQUFhLEVBQVUsRUFBRTtRQUMvQyxPQUFPLFVBQVUsQ0FBQyx3QkFBd0IsQ0FDdEMsS0FBSyxFQUNMO1lBQ0ksYUFBYSxFQUFFLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQztTQUNwRCxDQUNKLENBQUE7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