--- /dev/null
+# parse-entities
+
+[![Build][build-badge]][build]
+[![Coverage][coverage-badge]][coverage]
+[![Downloads][downloads-badge]][downloads]
+[![Size][size-badge]][size]
+
+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`
+
+###### `options.additional`
+
+Additional character to accept (`string?`, default: `''`).
+This allows other characters, without error, when following an ampersand.
+
+###### `options.attribute`
+
+Whether to parse `value` as an attribute value (`boolean?`, default:
+`false`).
+
+###### `options.nonTerminated`
+
+Whether to allow non-terminated entities (`boolean`, default: `true`).
+For example, `©cat` for `©cat`. This behaviour is spec-compliant but
+can lead to unexpected results.
+
+###### `options.warning`
+
+Error handler ([`Function?`][warning]).
+
+###### `options.text`
+
+Text handler ([`Function?`][text]).
+
+###### `options.reference`
+
+Reference handler ([`Function?`][reference]).
+
+###### `options.warningContext`
+
+Context used when invoking `warning` (`'*'`, optional).
+
+###### `options.textContext`
+
+Context used when invoking `text` (`'*'`, optional).
+
+###### `options.referenceContext`
+
+Context used when invoking `reference` (`'*'`, optional)
+
+###### `options.position`
+
+Starting `position` of `value` (`Location` or `Position`, optional). Useful
+when dealing with values nested in some sort of syntax tree. The default is:
+
+```js
+{
+ 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`
+
+Human-readable reason for triggering a parse error (`string`).
+
+###### `position`
+
+Place at which the parse error occurred (`Position`).
+
+###### `code`
+
+Identifier of reason for triggering a parse error (`number`).
+
+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 of content (`string`).
+
+###### `location`
+
+Location at which `value` starts and ends (`Location`).
+
+### `function reference(value, location, source)`
+
+Character reference handler.
+
+##### Context
+
+`this` refers to `referenceContext` when given to `parseEntities`.
+
+##### Parameters
+
+###### `value`
+
+Encoded character reference (`string`).
+
+###### `location`
+
+Location at which `value` starts and ends (`Location`).
+
+###### `source`
+
+Source of character reference (`Location`).
+
+## Related
+
+* [`stringify-entities`](https://github.com/wooorm/stringify-entities)
+ — Encode HTML character references
+* [`character-entities`](https://github.com/wooorm/character-entities)
+ — Info on character entities
+* [`character-entities-html4`](https://github.com/wooorm/character-entities-html4)
+ — Info on HTML4 character entities
+* [`character-entities-legacy`](https://github.com/wooorm/character-entities-legacy)
+ — Info on legacy character entities
+* [`character-reference-invalid`](https://github.com/wooorm/character-reference-invalid)
+ — Info on invalid numeric character references
+
+## License
+
+[MIT][license] © [Titus Wormer][author]
+
+<!-- Definitions -->
+
+[build-badge]: https://img.shields.io/travis/wooorm/parse-entities.svg
+
+[build]: https://travis-ci.org/wooorm/parse-entities
+
+[coverage-badge]: https://img.shields.io/codecov/c/github/wooorm/parse-entities.svg
+
+[coverage]: https://codecov.io/github/wooorm/parse-entities
+
+[downloads-badge]: https://img.shields.io/npm/dm/parse-entities.svg
+
+[downloads]: https://www.npmjs.com/package/parse-entities
+
+[size-badge]: https://img.shields.io/bundlephobia/minzip/parse-entities.svg
+
+[size]: https://bundlephobia.com/result?p=parse-entities
+
+[npm]: https://docs.npmjs.com/cli/install
+
+[license]: license
+
+[author]: https://wooorm.com
+
+[warning]: #function-warningreason-position-code
+
+[text]: #function-textvalue-location
+
+[reference]: #function-referencevalue-location-source
+
+[invalid]: https://github.com/wooorm/character-reference-invalid