@formatjs/icu-skeleton-parser 1.6.3 → 1.7.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.
- package/LICENSE.md +1 -1
- package/date-time.js +1 -1
- package/lib/date-time.js +2 -6
- package/lib/index.js +2 -5
- package/lib/number.js +12 -17
- package/lib/regex.generated.js +1 -4
- package/package.json +2 -2
package/LICENSE.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c)
|
|
3
|
+
Copyright (c) 2023 FormatJS
|
|
4
4
|
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
6
6
|
|
package/date-time.js
CHANGED
|
@@ -111,7 +111,7 @@ function parseDateTimeSkeleton(skeleton) {
|
|
|
111
111
|
result.timeZoneName = len < 4 ? 'short' : 'long';
|
|
112
112
|
break;
|
|
113
113
|
case 'Z': // 1..3, 4, 5: The ISO8601 varios formats
|
|
114
|
-
case 'O': // 1, 4:
|
|
114
|
+
case 'O': // 1, 4: milliseconds in day short, long
|
|
115
115
|
case 'v': // 1, 4: generic non-location format
|
|
116
116
|
case 'V': // 1, 2, 3, 4: time zone ID or city
|
|
117
117
|
case 'X': // 1, 2, 3, 4: The ISO8601 varios formats
|
package/lib/date-time.js
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.parseDateTimeSkeleton = void 0;
|
|
4
1
|
/**
|
|
5
2
|
* https://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table
|
|
6
3
|
* Credit: https://github.com/caridy/intl-datetimeformat-pattern/blob/master/index.js
|
|
@@ -13,7 +10,7 @@ var DATE_TIME_REGEX = /(?:[Eec]{1,6}|G{1,5}|[Qq]{1,5}|(?:[yYur]+|U{1,5})|[ML]{1,
|
|
|
13
10
|
* @public
|
|
14
11
|
* @param skeleton skeleton string
|
|
15
12
|
*/
|
|
16
|
-
function parseDateTimeSkeleton(skeleton) {
|
|
13
|
+
export function parseDateTimeSkeleton(skeleton) {
|
|
17
14
|
var result = {};
|
|
18
15
|
skeleton.replace(DATE_TIME_REGEX, function (match) {
|
|
19
16
|
var len = match.length;
|
|
@@ -111,7 +108,7 @@ function parseDateTimeSkeleton(skeleton) {
|
|
|
111
108
|
result.timeZoneName = len < 4 ? 'short' : 'long';
|
|
112
109
|
break;
|
|
113
110
|
case 'Z': // 1..3, 4, 5: The ISO8601 varios formats
|
|
114
|
-
case 'O': // 1, 4:
|
|
111
|
+
case 'O': // 1, 4: milliseconds in day short, long
|
|
115
112
|
case 'v': // 1, 4: generic non-location format
|
|
116
113
|
case 'V': // 1, 2, 3, 4: time zone ID or city
|
|
117
114
|
case 'X': // 1, 2, 3, 4: The ISO8601 varios formats
|
|
@@ -122,4 +119,3 @@ function parseDateTimeSkeleton(skeleton) {
|
|
|
122
119
|
});
|
|
123
120
|
return result;
|
|
124
121
|
}
|
|
125
|
-
exports.parseDateTimeSkeleton = parseDateTimeSkeleton;
|
package/lib/index.js
CHANGED
|
@@ -1,5 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
var tslib_1 = require("tslib");
|
|
4
|
-
tslib_1.__exportStar(require("./date-time"), exports);
|
|
5
|
-
tslib_1.__exportStar(require("./number"), exports);
|
|
1
|
+
export * from './date-time';
|
|
2
|
+
export * from './number';
|
package/lib/number.js
CHANGED
|
@@ -1,15 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
var tslib_1 = require("tslib");
|
|
5
|
-
var regex_generated_1 = require("./regex.generated");
|
|
6
|
-
function parseNumberSkeletonFromString(skeleton) {
|
|
1
|
+
import { __assign } from "tslib";
|
|
2
|
+
import { WHITE_SPACE_REGEX } from './regex.generated';
|
|
3
|
+
export function parseNumberSkeletonFromString(skeleton) {
|
|
7
4
|
if (skeleton.length === 0) {
|
|
8
5
|
throw new Error('Number skeleton cannot be empty');
|
|
9
6
|
}
|
|
10
7
|
// Parse the skeleton
|
|
11
8
|
var stringTokens = skeleton
|
|
12
|
-
.split(
|
|
9
|
+
.split(WHITE_SPACE_REGEX)
|
|
13
10
|
.filter(function (x) { return x.length > 0; });
|
|
14
11
|
var tokens = [];
|
|
15
12
|
for (var _i = 0, stringTokens_1 = stringTokens; _i < stringTokens_1.length; _i++) {
|
|
@@ -29,7 +26,6 @@ function parseNumberSkeletonFromString(skeleton) {
|
|
|
29
26
|
}
|
|
30
27
|
return tokens;
|
|
31
28
|
}
|
|
32
|
-
exports.parseNumberSkeletonFromString = parseNumberSkeletonFromString;
|
|
33
29
|
function icuUnitToEcma(unit) {
|
|
34
30
|
return unit.replace(/^(.*?)-/, '');
|
|
35
31
|
}
|
|
@@ -152,7 +148,7 @@ function parseNotationOptions(opt) {
|
|
|
152
148
|
/**
|
|
153
149
|
* https://github.com/unicode-org/icu/blob/master/docs/userguide/format_parse/numbers/skeletons.md#skeleton-stems-and-options
|
|
154
150
|
*/
|
|
155
|
-
function parseNumberSkeleton(tokens) {
|
|
151
|
+
export function parseNumberSkeleton(tokens) {
|
|
156
152
|
var result = {};
|
|
157
153
|
for (var _i = 0, tokens_1 = tokens; _i < tokens_1.length; _i++) {
|
|
158
154
|
var token = tokens_1[_i];
|
|
@@ -193,10 +189,10 @@ function parseNumberSkeleton(tokens) {
|
|
|
193
189
|
result.compactDisplay = 'long';
|
|
194
190
|
continue;
|
|
195
191
|
case 'scientific':
|
|
196
|
-
result =
|
|
192
|
+
result = __assign(__assign(__assign({}, result), { notation: 'scientific' }), token.options.reduce(function (all, opt) { return (__assign(__assign({}, all), parseNotationOptions(opt))); }, {}));
|
|
197
193
|
continue;
|
|
198
194
|
case 'engineering':
|
|
199
|
-
result =
|
|
195
|
+
result = __assign(__assign(__assign({}, result), { notation: 'engineering' }), token.options.reduce(function (all, opt) { return (__assign(__assign({}, all), parseNotationOptions(opt))); }, {}));
|
|
200
196
|
continue;
|
|
201
197
|
case 'notation-simple':
|
|
202
198
|
result.notation = 'standard';
|
|
@@ -274,27 +270,26 @@ function parseNumberSkeleton(tokens) {
|
|
|
274
270
|
var opt = token.options[0];
|
|
275
271
|
// https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#trailing-zero-display
|
|
276
272
|
if (opt === 'w') {
|
|
277
|
-
result =
|
|
273
|
+
result = __assign(__assign({}, result), { trailingZeroDisplay: 'stripIfInteger' });
|
|
278
274
|
}
|
|
279
275
|
else if (opt) {
|
|
280
|
-
result =
|
|
276
|
+
result = __assign(__assign({}, result), parseSignificantPrecision(opt));
|
|
281
277
|
}
|
|
282
278
|
continue;
|
|
283
279
|
}
|
|
284
280
|
// https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#significant-digits-precision
|
|
285
281
|
if (SIGNIFICANT_PRECISION_REGEX.test(token.stem)) {
|
|
286
|
-
result =
|
|
282
|
+
result = __assign(__assign({}, result), parseSignificantPrecision(token.stem));
|
|
287
283
|
continue;
|
|
288
284
|
}
|
|
289
285
|
var signOpts = parseSign(token.stem);
|
|
290
286
|
if (signOpts) {
|
|
291
|
-
result =
|
|
287
|
+
result = __assign(__assign({}, result), signOpts);
|
|
292
288
|
}
|
|
293
289
|
var conciseScientificAndEngineeringOpts = parseConciseScientificAndEngineeringStem(token.stem);
|
|
294
290
|
if (conciseScientificAndEngineeringOpts) {
|
|
295
|
-
result =
|
|
291
|
+
result = __assign(__assign({}, result), conciseScientificAndEngineeringOpts);
|
|
296
292
|
}
|
|
297
293
|
}
|
|
298
294
|
return result;
|
|
299
295
|
}
|
|
300
|
-
exports.parseNumberSkeleton = parseNumberSkeleton;
|
package/lib/regex.generated.js
CHANGED
|
@@ -1,5 +1,2 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.WHITE_SPACE_REGEX = void 0;
|
|
4
1
|
// @generated from regex-gen.ts
|
|
5
|
-
|
|
2
|
+
export var WHITE_SPACE_REGEX = /[\t-\r \x85\u200E\u200F\u2028\u2029]/i;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@formatjs/icu-skeleton-parser",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.0",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"module": "lib/index.js",
|
|
6
6
|
"types": "index.d.ts",
|
|
@@ -12,6 +12,6 @@
|
|
|
12
12
|
},
|
|
13
13
|
"dependencies": {
|
|
14
14
|
"tslib": "^2.4.0",
|
|
15
|
-
"@formatjs/ecma402-abstract": "1.
|
|
15
|
+
"@formatjs/ecma402-abstract": "1.18.0"
|
|
16
16
|
}
|
|
17
17
|
}
|