intl-messageformat-parser
Parses ICU Message strings into an AST via JavaScript.
Last updated 20 days ago by longlho .
BSD-3-Clause · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install intl-messageformat-parser 
SYNC missed versions from official npm registry.

Intl MessageFormat Parser

Parses ICU Message strings into an AST via JavaScript.

npm Version size

Overview

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.

Usage

import {parse} from 'intl-messageformat-parser';
const ast = parse('this is {count, plural, one{# dog} other{# dogs}}');

Example

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."
          }
        ]
      }
    ]
  }
]

Benchmarks

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)

License

This software is free to use under the Yahoo! Inc. BSD license. See the LICENSE file for license text and copyright information.

Current Tags

  • 3.2.1                                ...           latest (20 days ago)

48 Versions

  • 3.2.1                                ...           20 days ago
  • 3.2.0                                ...           a month ago
  • 3.1.1                                ...           a month ago
  • 3.1.0                                ...           2 months ago
  • 3.0.8                                ...           2 months ago
  • 3.0.7                                ...           2 months ago
  • 3.0.6                                ...           2 months ago
  • 3.0.5                                ...           2 months ago
  • 3.0.4                                ...           2 months ago
  • 3.0.3                                ...           2 months ago
  • 3.0.2                                ...           3 months ago
  • 3.0.1                                ...           3 months ago
  • 3.0.0                                ...           3 months ago
  • 2.1.3                                ...           3 months ago
  • 2.1.2                                ...           3 months ago
  • 2.1.0                                ...           3 months ago
  • 2.0.1                                ...           3 months ago
  • 2.0.0                                ...           3 months ago
  • 1.8.1                                ...           4 months ago
  • 1.8.0                                ...           4 months ago
  • 1.7.1                                ...           4 months ago
  • 1.7.0                                ...           4 months ago
  • 1.6.8                                ...           4 months ago
  • 1.6.7                                ...           4 months ago
  • 1.6.6                                ...           4 months ago
  • 1.6.5                                ...           5 months ago
  • 1.6.3                                ...           5 months ago
  • 1.6.2                                ...           5 months ago
  • 1.6.1                                ...           5 months ago
  • 1.6.0                                ...           5 months ago
  • 1.5.1                                ...           6 months ago
  • 1.5.0                                ...           6 months ago
  • 1.4.0                                ...           2 years ago
  • 1.3.0                                ...           3 years ago
  • 1.2.0                                ...           4 years ago
  • 1.1.0                                ...           5 years ago
  • 1.0.2                                ...           5 years ago
  • 1.0.1                                ...           5 years ago
  • 1.0.0                                ...           5 years ago
  • 1.0.0-rc-2                                ...           5 years ago
  • 1.0.0-rc-1                                ...           5 years ago
  • 0.4.0                                ...           5 years ago
  • 0.3.2                                ...           5 years ago
  • 0.3.1                                ...           5 years ago
  • 0.3.0                                ...           5 years ago
  • 0.2.0                                ...           5 years ago
  • 0.1.1                                ...           5 years ago
  • 0.1.0                                ...           5 years ago
Downloads
Today 80
This Week 2,478
This Month 28,590
Last Day 2,398
Last Week 12,248
Last Month 47,353
Dependencies (0)
None
Dev Dependencies (0)
None
Dependents (70)

Copyright 2014 - 2016 © taobao.org |