{"_id":"@ember-intl/intl-messageformat-parser","_rev":"14-cfea499b68e109ab1c9f16bc3d88f87b","name":"@ember-intl/intl-messageformat-parser","dist-tags":{"latest":"1.5.0"},"versions":{"2.0.0":{"name":"@ember-intl/intl-messageformat-parser","version":"2.0.0","keywords":["i18n","intl","internationalization","localization","globalization","messageformat","parser","plural","icu"],"author":{"name":"Eric Ferraiuolo","email":"eferraiuolo@gmail.com"},"license":"BSD-3-Clause","_id":"@ember-intl/intl-messageformat-parser@2.0.0","maintainers":[{"name":"jasonmit","email":"jason.mitchell.w@gmail.com"}],"homepage":"https://github.com/ember-intl/intl-messageformat-parser","bugs":{"url":"https://github.com/ember-intl/intl-messageformat-parser/issues"},"dist":{"shasum":"0f708ef3f4d84bdb12df268dceca9dd9a5d435ad","tarball":"https://registry.npmjs.org/@ember-intl/intl-messageformat-parser/-/intl-messageformat-parser-2.0.0.tgz","integrity":"sha512-wJ80vd1CjipS17SHd+Xg4kGjgsZ9RG98aSyBuJpTm+tE/eRlJiD1XGB5vqrZ3nY2/TFoV5xBR9TQ5WxKGybq0A==","signatures":[{"sig":"MEYCIQDkxePDKvwqHiIO9gl3advTFJJv+nRe/aulp/4BJTFjPwIhAIa5rgPCU0W8+JLmXjkWvqQPF858kpM83ameAvX4dJe2","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","gitHead":"6c149212ed0207cdefe01a63c90bdfc04850705c","scripts":{"test":"istanbul cover -- _mocha test/unit/ --reporter spec","prepublish":"grunt"},"_npmUser":{"name":"jasonmit","email":"jason.mitchell.w@gmail.com"},"repository":{"url":"git://github.com/ember-intl/intl-messageformat-parser.git","type":"git"},"_npmVersion":"5.3.0","description":"Parses ICU Message strings into an AST via JavaScript.","directories":{},"jsnext:main":"src/parser.js","_nodeVersion":"8.1.2","devDependencies":{"grunt":"^0.4.5","mocha":"^2.0.1","istanbul":"^0.3.2","expect.js":"^0.3.1","grunt-cli":"^0.1.13","grunt-peg":"^2.0.1","xunit-file":"0.0.6","grunt-benchmark":"^0.3.0","grunt-contrib-copy":"^0.7.0","grunt-contrib-clean":"^0.6.0","grunt-bundle-jsnext-lib":"^0.5.0"},"_npmOperationalInternal":{"tmp":"tmp/intl-messageformat-parser-2.0.0.tgz_1503533213923_0.04561118991114199","host":"s3://npm-registry-packages"}},"2.0.1":{"name":"@ember-intl/intl-messageformat-parser","version":"2.0.1","keywords":["i18n","intl","internationalization","localization","globalization","messageformat","parser","plural","icu"],"author":{"name":"Eric Ferraiuolo","email":"eferraiuolo@gmail.com"},"license":"BSD-3-Clause","_id":"@ember-intl/intl-messageformat-parser@2.0.1","maintainers":[{"name":"jasonmit","email":"jason.mitchell.w@gmail.com"}],"homepage":"https://github.com/ember-intl/intl-messageformat-parser","bugs":{"url":"https://github.com/ember-intl/intl-messageformat-parser/issues"},"dist":{"shasum":"d2f02c8f73642098817ca868593be63a3e1c34b3","tarball":"https://registry.npmjs.org/@ember-intl/intl-messageformat-parser/-/intl-messageformat-parser-2.0.1.tgz","integrity":"sha512-wAaAxjGSTqaoDuqUzhxjY6bJgX+UlrhnVhA1TqzeOEq9cUyG0S2tJwXD2jx0kBbkJs6YqFAUkDEDkUQe+Rf5Hg==","signatures":[{"sig":"MEUCIQCjWE0OYTxiDcwzObsEGsLmv0LfrTMC0foEZq8mGb2t/gIgB3qixaiijHLwyL6ZibgrXShfx2Z+EMqMMnr22NHy4Kw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","gitHead":"c485002389d5bbffc917082741bd21db1371ca80","scripts":{"test":"istanbul cover -- _mocha test/unit/ --reporter spec","prepublish":"grunt"},"_npmUser":{"name":"jasonmit","email":"jason.mitchell.w@gmail.com"},"repository":{"url":"git://github.com/ember-intl/intl-messageformat-parser.git","type":"git"},"_npmVersion":"5.3.0","description":"Parses ICU Message strings into an AST via JavaScript.","directories":{},"jsnext:main":"src/parser.js","_nodeVersion":"8.1.2","devDependencies":{"grunt":"^0.4.5","mocha":"^2.0.1","istanbul":"^0.3.2","expect.js":"^0.3.1","grunt-cli":"^0.1.13","grunt-peg":"^2.0.1","xunit-file":"0.0.6","grunt-benchmark":"^0.3.0","grunt-contrib-copy":"^0.7.0","grunt-contrib-clean":"^0.6.0","grunt-bundle-jsnext-lib":"^0.5.0"},"_npmOperationalInternal":{"tmp":"tmp/intl-messageformat-parser-2.0.1.tgz_1503535227537_0.7500975271686912","host":"s3://npm-registry-packages"}},"1.4.0":{"name":"@ember-intl/intl-messageformat-parser","version":"1.4.0","keywords":["i18n","intl","internationalization","localization","globalization","messageformat","parser","plural","icu"],"author":{"name":"Eric Ferraiuolo","email":"eferraiuolo@gmail.com"},"license":"BSD-3-Clause","_id":"@ember-intl/intl-messageformat-parser@1.4.0","maintainers":[{"name":"jasonmit","email":"jason.mitchell.w@gmail.com"}],"homepage":"https://github.com/yahoo/intl-messageformat-parser","bugs":{"url":"https://github.com/yahoo/intl-messageformat-parser/issues"},"dist":{"shasum":"b94280a3ce10092a3140a7c0f2f66f899522a30c","tarball":"https://registry.npmjs.org/@ember-intl/intl-messageformat-parser/-/intl-messageformat-parser-1.4.0.tgz","fileCount":12,"integrity":"sha512-ppUGxvWuT0N226AxsX+HV1CnOxhf9TXIN/Z9CXbvvqeNB7iuSjWfOH/vMcTyHJ/hpd4ou0rE+IrU0Eg9R0pBjQ==","signatures":[{"sig":"MEQCIFki1qTrPk5Y0EN2lVlKHZZhteKteRxykEOaHdtMvtYDAiBTi4xKQvgSzwjXf3tU8QGBSqMnP5zRWEJmEBZj2Yjg4g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":457974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbu/VeCRA9TVsSAnZWagAAdpcQAJtYtaacUVEW3D2RXrvM\njZ0NBccwnj3tGVjOHc1Jr/xmhtKuZymx/wmMnchHLMNoTC00wMSNNFsHZTlo\nAt5k8MqOz7mzo6AvaRMDNDXNWTzii0zaccT/aSc4FfUvD49s38Q9umh6K4R1\nZql3MyrV+cTQsoMFgU2YsbdWrPSdZ5VV6MsFeK861UtigNScLquQSJSvE3I2\n2kT0NyjfkFr4KKImr9oyyhwEemWJnv9PRacD7KjXuEuGcd9FqE+9yytpkqDa\nAJS7xNMl65IkQDuYFIK0/YFAR14l7Dl5XpCOMbGooQPA86xI3tUeFXSGPFje\nQhMeB4xONADzv3eOCciO6b7bkpAG5pYs9ZXsPeN+R8ARP162Fra4WfeCClsj\nhz6w7l7bCvlY7jn7Rf6G6y4sbIHZDh8sTAzERvPxV+qlcc9eVLaUNYiYFCsb\nB4bWX5JQijTlepvXMay0DPDVWWi3Jwtz4QOo6j+CrfgjUwMA1Za+Yx3wkGEU\nt5Fcbh5Lmkcfz6wRXdT/FW/8egxs30KOV8TyrPZ6mkRsEPTBAz4l7cFKOnyU\n4yAWp/PKK7vgz6iZnh4zi53WCZW5jc37fZaR8eTKcZvQN1YZH6/hSdvhAVJ0\nlQsTcGR4QM3n/Yw1CK2ttAHCq2+zcX4S37rsQTnzd/nSg4HUN/uMKN/bo3SA\ncsVb\r\n=sXuo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"aa35bb332e07884e135a0c0902991f728f7dac4b","scripts":{"test":"istanbul cover -- _mocha test/unit/ --reporter spec","prepublish":"grunt"},"_npmUser":{"name":"jasonmit","email":"jason.mitchell.w@gmail.com"},"repository":{"url":"git://github.com/yahoo/intl-messageformat-parser.git","type":"git"},"_npmVersion":"6.1.0","description":"Parses ICU Message strings into an AST via JavaScript.","directories":{},"jsnext:main":"src/parser.js","_nodeVersion":"10.7.0","_hasShrinkwrap":false,"devDependencies":{"grunt":"^0.4.5","mocha":"^2.0.1","istanbul":"^0.3.2","expect.js":"^0.3.1","grunt-cli":"^0.1.13","grunt-peg":"^2.0.1","xunit-file":"0.0.6","grunt-benchmark":"^0.3.0","grunt-contrib-copy":"^0.7.0","grunt-contrib-clean":"^0.6.0","grunt-bundle-jsnext-lib":"^0.5.0"},"_npmOperationalInternal":{"tmp":"tmp/intl-messageformat-parser_1.4.0_1539044701969_0.01632796111085133","host":"s3://npm-registry-packages"}},"1.5.0":{"name":"@ember-intl/intl-messageformat-parser","version":"1.5.0","keywords":["i18n","intl","internationalization","localization","globalization","messageformat","parser","plural","icu"],"author":{"name":"Eric Ferraiuolo","email":"eferraiuolo@gmail.com"},"license":"BSD-3-Clause","_id":"@ember-intl/intl-messageformat-parser@1.5.0","maintainers":[{"name":"buschtoens","email":"buschtoens@gmail.com"},{"name":"jasonmit","email":"jason.mitchell.w@gmail.com"},{"name":"snewcomer","email":"snewcomer24@gmail.com"}],"homepage":"https://github.com/yahoo/intl-messageformat-parser","bugs":{"url":"https://github.com/yahoo/intl-messageformat-parser/issues"},"dist":{"shasum":"21361c912b66023a538cb3a75ebbe7853c5dea3c","tarball":"https://registry.npmjs.org/@ember-intl/intl-messageformat-parser/-/intl-messageformat-parser-1.5.0.tgz","fileCount":12,"integrity":"sha512-RGvJPeZ+6N3kknYZdN/D/CC1ZpTYK9g6TRwJzPMxKKL3iaVy/K5MXWdMzA0iA061VdqGJwjajf0FeIoCA9VaTA==","signatures":[{"sig":"MEQCICRDY8FJ1lcUCJJeJWEHmeTHwf0egeyUOjtUhGtmNUelAiBGhksbfyGnbH76Q3v62XrtnPTY/LkkyKpSKoROqHXzQA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":462762,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb3zK/CRA9TVsSAnZWagAAaYwP/2ppYzJnHrGnjXdzBArP\nD3D8uXCuEJBwmg+QlCVFT+aiLY480rDB9okmRBBFPGxjl4x2II05TsQDOSKh\nwaFQX/DkfysI/ESESZaFh2bGFSL1t1xYwz799GrEnShg3wcFANw6x9/oyX5B\npP1ChK/LxYuFSunf6H52Pm//2AS4bOohA5Vq4BWY4+aER7Vs+je8m6abPshU\nY5qmLPKTEX8PhrkN3KhHqRYjnT3tl8w9YiN/CqfBa754YSjYYxStaMkVwfma\nSVhtuJNr/JdmbsMOHit4+QBYEGKrC2GDFThPfbrdw4eZBmBGFkoQdbuWxjmM\n97ItZQ8KJ28u4wt5NPW821GVT+CfGBqX6vhdxbITdYglcFTAReVpFpwwXazE\nzlJrUC2txkQxl/LFLWZjcEbMvtSkHZL7CmSouJXn+mAq02BM/pJ0h41hm6Oi\n4EDnm8PMyJ6Hc8gTKXpqaSzCQ2lIXIaIWp9bqWRgwL/Iv//YO++QnmERP1wn\nlJB09coPUeFc//naMSry+VFUmPHpboP1AEhxKfxEBtGc90WDPiAPeqwCuuam\nC+UU7H/znG5TKY7V4j84hAw1IPSM143BezjWj6WxaFVCJ9F5312uRTTeV6Xo\njtrMhBAQj0pXtHMysmU3lngv/A1nP1NvE/V+xrV7PYxIYF7H0Say1R8goucZ\nAA/m\r\n=NoXv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"ae4596d49a0e9f78b03b9587c8987bfcd4564146","scripts":{"test":"istanbul cover -- _mocha test/unit/ --reporter spec","prepublish":"grunt"},"_npmUser":{"name":"snewcomer","email":"snewcomer24@gmail.com"},"repository":{"url":"git://github.com/yahoo/intl-messageformat-parser.git","type":"git"},"_npmVersion":"6.4.1","description":"Parses ICU Message strings into an AST via JavaScript.","directories":{},"jsnext:main":"src/parser.js","_nodeVersion":"10.11.0","_hasShrinkwrap":false,"devDependencies":{"grunt":"^0.4.5","mocha":"^2.0.1","istanbul":"^0.3.2","expect.js":"^0.3.1","grunt-cli":"^0.1.13","grunt-peg":"^2.0.1","xunit-file":"0.0.6","grunt-benchmark":"^0.3.0","grunt-contrib-copy":"^0.7.0","grunt-contrib-clean":"^0.6.0","grunt-bundle-jsnext-lib":"^0.5.0"},"_npmOperationalInternal":{"tmp":"tmp/intl-messageformat-parser_1.5.0_1541354174028_0.8229591108095062","host":"s3://npm-registry-packages"}}},"time":{"created":"2017-08-24T00:06:54.047Z","modified":"2026-04-01T18:15:06.548Z","2.0.0":"2017-08-24T00:06:54.047Z","2.0.1":"2017-08-24T00:40:28.559Z","1.4.0":"2018-10-09T00:25:02.159Z","1.5.0":"2018-11-04T17:56:14.859Z"},"bugs":{"url":"https://github.com/yahoo/intl-messageformat-parser/issues"},"author":{"name":"Eric Ferraiuolo","email":"eferraiuolo@gmail.com"},"license":"BSD-3-Clause","homepage":"https://github.com/yahoo/intl-messageformat-parser","keywords":["i18n","intl","internationalization","localization","globalization","messageformat","parser","plural","icu"],"repository":{"url":"git://github.com/yahoo/intl-messageformat-parser.git","type":"git"},"description":"Parses ICU Message strings into an AST via JavaScript.","maintainers":[{"email":"isaacjlee@hotmail.com","name":"ijlee2"},{"email":"jason.mitchell.w@gmail.com","name":"jasonmit"},{"email":"jan@buschtoens.me","name":"buschtoens"}],"readme":"Intl MessageFormat Parser\n=========================\n\nParses [ICU Message strings][ICU] into an AST via JavaScript.\n\n[![npm Version][npm-badge]][npm]\n[![Build Status][travis-badge]][travis]\n[![Dependency Status][david-badge]][david]\n\n\nOverview\n--------\n\nThis 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.\n\nThis parser is written in [PEG.js](https://pegjs.org/), 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:\n\n- This project is standalone.\n- It's authored as ES6 modules compiled to CommonJS and the Bundle format for the browser.\n- The produced AST is more descriptive and uses recursive structures.\n- The keywords used in the AST match the ICU Message \"spec\".\n\n\nUsage\n-----\n\n### Loading in the Browser\n\nThe `dist/` folder contains the version of this package for use in the browser, and it can be loaded and used like this:\n\n```html\n<script src=\"intl-messageformat-parser/dist/parser.min.js\"></script>\n<script>\n    IntlMessageFormatParser.parse('...');\n</script>\n```\n\n### Loading in Node.js\n\nThis package can also be `require()`-ed in Node.js:\n\n```js\nvar parser = require('intl-messageformat-parser');\nparser.parse('...');\n```\n\n### Example\n\nGiven an ICU Message string like this:\n\n```\nOn {takenDate, date, short} {name} took {numPhotos, plural,\n    =0 {no photos.}\n    =1 {one photo.}\n    other {# photos.}\n}\n```\n\n```js\n// Assume `msg` is the string above.\nparser.parse(msg);\n```\n\nThis parser will produce this AST:\n\n```json\n{\n    \"type\": \"messageFormatPattern\",\n    \"elements\": [\n        {\n            \"type\": \"messageTextElement\",\n            \"value\": \"On \"\n        },\n        {\n            \"type\": \"argumentElement\",\n            \"id\": \"takenDate\",\n            \"format\": {\n                \"type\": \"dateFormat\",\n                \"style\": \"short\"\n            }\n        },\n        {\n            \"type\": \"messageTextElement\",\n            \"value\": \" \"\n        },\n        {\n            \"type\": \"argumentElement\",\n            \"id\": \"name\",\n            \"format\": null\n        },\n        {\n            \"type\": \"messageTextElement\",\n            \"value\": \" took \"\n        },\n        {\n            \"type\": \"argumentElement\",\n            \"id\": \"numPhotos\",\n            \"format\": {\n                \"type\": \"pluralFormat\",\n                \"offset\": 0,\n                \"options\": [\n                    {\n                        \"type\": \"optionalFormatPattern\",\n                        \"selector\": \"=0\",\n                        \"value\": {\n                            \"type\": \"messageFormatPattern\",\n                            \"elements\": [\n                                {\n                                    \"type\": \"messageTextElement\",\n                                    \"value\": \"no photos.\"\n                                }\n                            ]\n                        }\n                    },\n                    {\n                        \"type\": \"optionalFormatPattern\",\n                        \"selector\": \"=1\",\n                        \"value\": {\n                            \"type\": \"messageFormatPattern\",\n                            \"elements\": [\n                                {\n                                    \"type\": \"messageTextElement\",\n                                    \"value\": \"one photo.\"\n                                }\n                            ]\n                        }\n                    },\n                    {\n                        \"type\": \"optionalFormatPattern\",\n                        \"selector\": \"other\",\n                        \"value\": {\n                            \"type\": \"messageFormatPattern\",\n                            \"elements\": [\n                                {\n                                    \"type\": \"messageTextElement\",\n                                    \"value\": \"# photos.\"\n                                }\n                            ]\n                        }\n                    }\n                ]\n            }\n        }\n    ]\n}\n```\n\n\nLicense\n-------\n\nThis software is free to use under the Yahoo! Inc. BSD license.\nSee the [LICENSE file][] for license text and copyright information.\n\n\n[npm]: https://www.npmjs.org/package/intl-messageformat-parser\n[npm-badge]: https://img.shields.io/npm/v/intl-messageformat-parser.svg?style=flat-square\n[david]: https://david-dm.org/yahoo/intl-messageformat-parser\n[david-badge]: https://img.shields.io/david/yahoo/intl-messageformat-parser.svg?style=flat-square\n[travis]: https://travis-ci.org/yahoo/intl-messageformat-parser\n[travis-badge]: https://img.shields.io/travis/yahoo/intl-messageformat-parser.svg?style=flat-square\n[ICU]: http://userguide.icu-project.org/formatparse/messages\n[intl-mf]: https://github.com/yahoo/intl-messageformat\n[PEG.js]: http://pegjs.majda.cz\n[messageformat.js]: https://github.com/SlexAxton/messageformat.js\n[LICENSE file]: https://github.com/yahoo/intl-messageformat-parser/blob/master/LICENSE\n","readmeFilename":"README.md"}