输入信件格式解析器
参数 ICU 信件字符串 通过 JavaScript 输入 AST .
概览
此软件包在 JavaScript 中执行解析器, 解析行业标准 ICU 信件字符串 ——用于国际化——成为AST. 生成的 AST 可以被编译器使用, 比如 intl-messageformat,用于向用户显示本地化格式字符串.
此解析器为 国家,用于 JavaScript 的解析器生成器。 这个解析器的执行灵感和来源于Alex Sexton的 messageformat.js 页面存档备份,存于互联网档案馆 项目。 与亚历克斯执行的区别是:
- 这个项目是独立的.
- 它作为ES6模块被编译为CommonJS和为浏览器所使用Bundle格式.
- 生成的AST更能描述并使用递归结构.
- AST 中使用的关键词与 ICU 信件" spec"相匹配.
使用量
在浏览器中加载
这个 dist/ 文件夹中包含此软件包的版本, 供浏览器使用, 可以这样加载和使用 :
<script src="intl-messageformat-parser/dist/parser.min.js"></script>
<script>
IntlMessageFormatParser.parse('...');
</script>
在节点中装入
这个软件包也可以是 require()- 在节点:
var parser = require('intl-messageformat-parser');
parser.parse('...');
示例
考虑到这样的 ICU 信件字符串 :
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);
此解析器将生成此 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."
}
]
}
}
]
}
}
]
}
许可证
这个软件可以在雅虎下自由使用! BSD许可证. 见 自由文件 许可证文本和版权信息.