Repository URL to install this package:
|
Version:
2.0.11-8 ▾
|
notion-enhanced
/
usr
/
lib
/
notion-enhanced
/
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)