Product
Introducing License Enforcement in Socket
Ensure open-source compliance with Socket’s License Enforcement Beta. Set up your License Policy and secure your software!
@ember-intl/intl-messageformat-parser
Advanced tools
Parses ICU Message strings into an AST via JavaScript.
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. This parser's implementation was inspired by and derived from Alex Sexton's messageformat.js project. The differences from Alex's implementation are:
The dist/
folder contains the version of this package for use in the browser, and it can be loaded and used like this:
<script src="intl-messageformat-parser/dist/parser.min.js"></script>
<script>
IntlMessageFormatParser.parse('...');
</script>
This package can also be require()
-ed in Node.js:
var parser = require('intl-messageformat-parser');
parser.parse('...');
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.
parser.parse(msg);
This parser will produce this AST:
{
"type": "messageFormatPattern",
"elements": [
{
"type": "messageTextElement",
"value": "On "
},
{
"type": "argumentElement",
"id": "takenDate",
"format": {
"type": "dateFormat",
"style": "short"
}
},
{
"type": "messageTextElement",
"value": " "
},
{
"type": "argumentElement",
"id": "name",
"format": null
},
{
"type": "messageTextElement",
"value": " took "
},
{
"type": "argumentElement",
"id": "numPhotos",
"format": {
"type": "pluralFormat",
"offset": 0,
"options": [
{
"type": "optionalFormatPattern",
"selector": "=0",
"value": {
"type": "messageFormatPattern",
"elements": [
{
"type": "messageTextElement",
"value": "no photos."
}
]
}
},
{
"type": "optionalFormatPattern",
"selector": "=1",
"value": {
"type": "messageFormatPattern",
"elements": [
{
"type": "messageTextElement",
"value": "one photo."
}
]
}
},
{
"type": "optionalFormatPattern",
"selector": "other",
"value": {
"type": "messageFormatPattern",
"elements": [
{
"type": "messageTextElement",
"value": "# photos."
}
]
}
}
]
}
}
]
}
This software is free to use under the Yahoo! Inc. BSD license. See the LICENSE file for license text and copyright information.
FAQs
Parses ICU Message strings into an AST via JavaScript.
The npm package @ember-intl/intl-messageformat-parser receives a total of 3,733 weekly downloads. As such, @ember-intl/intl-messageformat-parser popularity was classified as popular.
We found that @ember-intl/intl-messageformat-parser demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 3 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Ensure open-source compliance with Socket’s License Enforcement Beta. Set up your License Policy and secure your software!
Product
We're launching a new set of license analysis and compliance features for analyzing, managing, and complying with licenses across a range of supported languages and ecosystems.
Product
We're excited to introduce Socket Optimize, a powerful CLI command to secure open source dependencies with tested, optimized package overrides.