Repository URL to install this package:
Version:
2.0.11-7 ▾
|
notion-desktop
/
usr
/
lib
/
notion-desktop
/
resources
/
app
/
node_modules
/
intl-messageformat-parser
|
---|
.. |
dist |
lib |
src |
CHANGELOG.md |
LICENSE.md |
README.md |
package.json |
Parses ICU Message strings into an AST via JavaScript.
This package implements a parser in JavaScript that parses the industry standard ICU Message strings — used for internationalization — into an AST. The produced AST can then be used by a compiler, like intl-messageformat
, to produce localized formatted strings for display to users.
This parser is written in PEG.js, a parser generator for JavaScript.
import {parse} from 'intl-messageformat-parser'; const ast = parse('this is {count, plural, one{# dog} other{# dogs}}');
Given an ICU Message string like this:
On {takenDate, date, short} {name} took {numPhotos, plural,
=0 {no photos.}
=1 {one photo.}
other {# photos.}
}
// Assume `msg` is the string above. parse(msg);
This parser will produce this AST:
[ { "type": 0, "value": "On " }, { "type": 3, "style": "short", "value": "takenDate" }, { "type": 0, "value": " " }, { "type": 1, "value": "name" }, { "type": 0, "value": " took " }, { "type": 6, "pluralType": "cardinal", "value": "numPhotos", "offset": 0, "options": [ { "id": "=0", "value": [ { "type": 0, "value": "no photos." } ] }, { "id": "=1", "value": [ { "type": 0, "value": "one photo." } ] }, { "id": "other", "value": [ { "type": 0, "value": "# photos." } ] } ] } ]
ICU provides a wide array of pattern to customize date time format. However, not all of them are available via ECMA402's Intl API. Therefore, our parser only support the following patterns
Symbol | Meaning | Notes |
---|---|---|
G | Era designator | |
y | year | |
M | month in year | |
L | stand-alone month in year | |
d | day in month | |
E | day of week | |
e | local day of week | e..eee is not supported |
c | stand-alone local day of week | c..ccc is not supported |
a | AM/PM marker | |
h | Hour [1-12] | |
H | Hour [0-23] | |
K | Hour [0-11] | |
k | Hour [1-24] | |
m | Minute | |
s | Second | |
z | Time Zone |
complex_msg AST length 2053
normal_msg AST length 410
simple_msg AST length 79
string_msg AST length 36
complex_msg x 3,926 ops/sec ±2.37% (90 runs sampled)
normal_msg x 27,641 ops/sec ±3.93% (86 runs sampled)
simple_msg x 100,764 ops/sec ±5.35% (79 runs sampled)
string_msg x 120,362 ops/sec ±7.11% (74 runs sampled)