intl-messageformat-parser
Advanced tools
Comparing version 1.0.0-rc-2 to 1.0.0
{ | ||
"name": "intl-messageformat-parser", | ||
"version": "1.0.0-rc-2", | ||
"description": "Parses ICU message strings to an AST that can be used to format the messages for a person's locale.", | ||
"version": "1.0.0", | ||
"description": "Parses ICU Message strings into an AST via JavaScript.", | ||
"main": "index.js", | ||
"jsnext:main": "src/parser.js", | ||
"scripts": { | ||
"test": "echo \"Error: no test specified\" && exit 1", | ||
"test": "istanbul cover -- _mocha test/unit/ --reporter spec", | ||
"prepublish": "grunt" | ||
@@ -33,2 +33,3 @@ }, | ||
"devDependencies": { | ||
"expect.js": "^0.3.1", | ||
"grunt": "^0.4.5", | ||
@@ -39,5 +40,8 @@ "grunt-benchmark": "^0.3.0", | ||
"grunt-contrib-clean": "^0.6.0", | ||
"grunt-contrib-copy": "^0.5.0", | ||
"grunt-peg": "^1.5.0" | ||
"grunt-contrib-copy": "^0.6.0", | ||
"grunt-peg": "^1.5.0", | ||
"istanbul": "^0.3.2", | ||
"mocha": "^1.21.4", | ||
"xunit-file": "0.0.5" | ||
} | ||
} |
@@ -1,24 +0,61 @@ | ||
intl-messageformat-parser | ||
Intl MessageFormat Parser | ||
========================= | ||
Parses ICU message strings to an AST that can be used to format the messages for | ||
a person's locale. | ||
Parses [ICU Message strings][ICU] into an AST via JavaScript. | ||
[![npm Version](https://img.shields.io/npm/v/intl-messageformat-parser.svg?style=flat)][npm] | ||
[![Dependency Status](https://img.shields.io/david/yahoo/intl-messageformat-parser.svg?style=flat)][david] | ||
[![npm Version][npm-badge]][npm] | ||
[![Build Status][travis-badge]][travis] | ||
[![Dependency Status][david-badge]][david] | ||
[npm]: https://www.npmjs.org/package/intl-messageformat-parser | ||
[david]: https://david-dm.org/yahoo/intl-messageformat-parser | ||
Overview | ||
-------- | ||
This package implements a parser in JavaScript that parses the industry standard [ICU Message strings][ICU] — used for internationalization — into an AST. The produced AST can then be used by a compiler, like [`intl-messageformat`][intl-mf], 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: | ||
- This project is standalone. | ||
- It's authored as ES6 modules compiled to CommonJS and the Bundle format for the browser. | ||
- The produced AST is more descriptive and uses recursive structures. | ||
- The keywords used in the AST match the ICU Message "spec". | ||
Usage | ||
----- | ||
Given a message like this: | ||
### Loading in the Browser | ||
The `dist/` folder contains the version of this package for use in the browser, and it can be loaded and used like this: | ||
```html | ||
<script src="intl-messageformat-parser/dist/parser.min.js"></script> | ||
<script> | ||
IntlMessageFormatParser.parse('...'); | ||
</script> | ||
``` | ||
### Loading in Node.js | ||
This package can also be `require()`-ed in Node.js: | ||
```js | ||
var photosMsg = 'On {takenDate, date, short} {name} took {numPhotos, plural,' + | ||
'=0 {no photos :(}' + | ||
'=1 {one photo.}' + | ||
'other {# photos!}}'; | ||
var parser = require('intl-messageformat-parser'); | ||
parser.parse('...'); | ||
``` | ||
### Example | ||
Given an ICU Message string like this: | ||
``` | ||
On {takenDate, date, short} {name} took {numPhotos, plural, | ||
=0 {no photos.} | ||
=1 {one photo.} | ||
other {# photos.} | ||
} | ||
``` | ||
```js | ||
// Assume `msg` is the string above. | ||
parser.parse(msg); | ||
@@ -73,3 +110,3 @@ ``` | ||
"type": "messageTextElement", | ||
"value": "no photos :(" | ||
"value": "no photos." | ||
} | ||
@@ -100,3 +137,3 @@ ] | ||
"type": "messageTextElement", | ||
"value": "# photos!" | ||
"value": "# photos." | ||
} | ||
@@ -113,2 +150,3 @@ ] | ||
License | ||
@@ -120,2 +158,13 @@ ------- | ||
[LICENSE file]: /blob/master/LICENSE | ||
[npm]: https://www.npmjs.org/package/intl-messageformat-parser | ||
[npm-badge]: https://img.shields.io/npm/v/intl-messageformat-parser.svg?style=flat-square | ||
[david]: https://david-dm.org/yahoo/intl-messageformat-parser | ||
[david-badge]: https://img.shields.io/david/yahoo/intl-messageformat-parser.svg?style=flat-square | ||
[travis]: https://travis-ci.org/yahoo/intl-messageformat-parser | ||
[travis-badge]: https://img.shields.io/travis/yahoo/intl-messageformat-parser.svg?style=flat-square | ||
[ICU]: http://userguide.icu-project.org/formatparse/messages | ||
[intl-mf]: https://github.com/yahoo/intl-messageformat | ||
[PEG.js]: http://pegjs.majda.cz | ||
[messageformat.js]: https://github.com/SlexAxton/messageformat.js | ||
[LICENSE file]: https://github.com/yahoo/intl-messageformat-parser/blob/master/LICENSE |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
No tests
QualityPackage does not have any tests. This is a strong signal of a poorly maintained or low quality package.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
251737
11
0
167
11