rsuite-theme
Version:
The suite theme for pagurian
158 lines (107 loc) β’ 4.34 kB
Markdown
# parse-entities [![Build Status][build-badge]][build-status] [![Coverage Status][coverage-badge]][coverage-status]
Parse HTML character references: fast, spec-compliant, positional
information.
## Installation
[npm][]:
```bash
npm install parse-entities
```
## Usage
```js
var decode = require('parse-entities');
decode('alpha & bravo');
//=> alpha & bravo
decode('charlie ©cat; delta');
//=> charlie Β©cat; delta
decode('echo © foxtrot ≠ golf 𝌆 hotel');
//=> echo Β© foxtrot β golf π hotel
```
## API
## `parseEntities(value[, options])`
###### `options`
* `additional` (`string`, optional, default: `''`)
β Additional character to accept when following an ampersand (without
error)
* `attribute` (`boolean`, optional, default: `false`)
β Whether to parse `value` as an attribute value
* `nonTerminated` (`boolean`, default: `true`)
β Whether to allow non-terminated entities, such as `©cat` to
`Β©cat`. This behaviour is spec-compliant but can lead to unexpected
results
* `warning` ([`Function`][warning], optional)
β Error handler
* `text` ([`Function`][text], optional)
β Text handler
* `reference` ([`Function`][reference],
optional) β Reference handler
* `warningContext` (`'*'`, optional)
β Context used when invoking `warning`
* `textContext` (`'*'`, optional)
β Context used when invoking `text`
* `referenceContext` (`'*'`, optional)
β Context used when invoking `reference`
* `position` (`Location` or `Position`, optional)
β Starting `position` of `value`, useful when dealing with values
nested in some sort of syntax tree. The default is:
```json
{
"start": {
"line": 1,
"column": 1,
"offset": 0
},
"indent": []
}
```
###### Returns
`string` β Decoded `value`.
### `function warning(reason, position, code)`
Error handler.
###### Context
`this` refers to `warningContext` when given to `parseEntities`.
###### Parameters
* `reason` (`string`)
β Reason (human-readable) for triggering a parse error
* `position` (`Position`)
β Place at which the parse error occurred
* `code` (`number`)
β Identifier of reason for triggering a parse error
The following codes are used:
| Code | Example | Note |
| ---- | ------------------ | --------------------------------------------- |
| `1` | `foo & bar` | Missing semicolon (named) |
| `2` | `foo { bar` | Missing semicolon (numeric) |
| `3` | `Foo &bar baz` | Ampersand did not start a reference |
| `4` | `Foo &#` | Empty reference |
| `5` | `Foo &bar; baz` | Unknown entity |
| `6` | `Foo € baz` | [Disallowed reference][invalid] |
| `7` | `Foo � baz` | Prohibited: outside permissible unicode range |
###### `function text(value, location)`
Text handler.
###### Context
`this` refers to `textContext` when given to `parseEntities`.
###### Parameters
* `value` (`string`) β String of content
* `location` (`Location`) β Location at which `value` starts and ends
### `function reference(value, location, source)`
Character reference handler.
###### Context
`this` refers to `referenceContext` when given to `parseEntities`.
###### Parameters
* `value` (`string`) β Encoded character reference
* `location` (`Location`) β Location at which `value` starts and ends
* `source` (`Location`) β Source of character reference
## License
[MIT][license] Β© [Titus Wormer][author]
<!-- Definitions -->
[build-badge]: https://img.shields.io/travis/wooorm/parse-entities.svg
[build-status]: https://travis-ci.org/wooorm/parse-entities
[coverage-badge]: https://img.shields.io/codecov/c/github/wooorm/parse-entities.svg
[coverage-status]: https://codecov.io/github/wooorm/parse-entities
[npm]: https://docs.npmjs.com/cli/install
[license]: LICENSE
[author]: http://wooorm.com
[warning]: #function-warningreason-position-code
[text]: #function-textvalue-location
[reference]: #function-referencevalue-location-source
[invalid]: https://github.com/wooorm/character-reference-invalid