.gitignore added
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / remark-parse / readme.md
diff --git a/.config/coc/extensions/node_modules/coc-prettier/node_modules/remark-parse/readme.md b/.config/coc/extensions/node_modules/coc-prettier/node_modules/remark-parse/readme.md
new file mode 100644 (file)
index 0000000..0811985
--- /dev/null
@@ -0,0 +1,412 @@
+# remark-parse [![Build Status][build-badge]][build-status] [![Coverage Status][coverage-badge]][coverage-status] [![Chat][chat-badge]][chat]
+
+[Parser][] for [**unified**][unified].  Parses markdown to an
+[**MDAST**][mdast] syntax tree.  Used in the [**remark**
+processor][processor].  Can be [extended][extend] to change how
+markdown is parsed.
+
+## Installation
+
+[npm][]:
+
+```sh
+npm install remark-parse
+```
+
+## Usage
+
+```js
+var unified = require('unified');
+var createStream = require('unified-stream');
+var markdown = require('remark-parse');
+var html = require('remark-html');
+
+var processor = unified()
+  .use(markdown, {commonmark: true})
+  .use(html)
+
+process.stdin
+  .pipe(createStream(processor))
+  .pipe(process.stdout);
+```
+
+## Table of Contents
+
+*   [API](#api)
+    *   [processor.use(parse\[, options\])](#processoruseparse-options)
+    *   [parse.Parser](#parseparser)
+*   [Extending the Parser](#extending-the-parser)
+    *   [Parser#blockTokenizers](#parserblocktokenizers)
+    *   [Parser#blockMethods](#parserblockmethods)
+    *   [Parser#inlineTokenizers](#parserinlinetokenizers)
+    *   [Parser#inlineMethods](#parserinlinemethods)
+    *   [function tokenizer(eat, value, silent)](#function-tokenizereat-value-silent)
+    *   [tokenizer.locator(value, fromIndex)](#tokenizerlocatorvalue-fromindex)
+    *   [eat(subvalue)](#eatsubvalue)
+    *   [add(node\[, parent\])](#addnode-parent)
+    *   [add.test()](#addtest)
+    *   [add.reset(node\[, parent\])](#addresetnode-parent)
+    *   [Turning off a tokenizer](#turning-off-a-tokenizer)
+*   [License](#license)
+
+## API
+
+### `processor.use(parse[, options])`
+
+Configure the `processor` to read markdown as input and process an
+[**MDAST**][mdast] syntax tree.
+
+##### `options`
+
+Options are passed directly, or passed later through [`processor.data()`][data].
+
+##### `options.gfm`
+
+```md
+hello ~~hi~~ world
+```
+
+GFM mode (`boolean`, default: `true`) turns on:
+
+*   [Fenced code blocks](https://help.github.com/articles/github-flavored-markdown/#fenced-code-blocks)
+*   [Autolinking of URLs](https://help.github.com/articles/github-flavored-markdown/#url-autolinking)
+*   [Deletions (strikethrough)](https://help.github.com/articles/github-flavored-markdown/#strikethrough)
+*   [Task lists](https://help.github.com/articles/writing-on-github/#task-lists)
+*   [Tables](https://help.github.com/articles/github-flavored-markdown/#tables)
+
+##### `options.commonmark`
+
+```md
+This is a paragraph
+    and this is also part of the preceding paragraph.
+```
+
+CommonMark mode (`boolean`, default: `false`) allows:
+
+*   Empty lines to split blockquotes
+*   Parentheses (`(` and `)`) around for link and image titles
+*   Any escaped [ASCII-punctuation][escapes] character
+*   Closing parenthesis (`)`) as an ordered list marker
+*   URL definitions (and footnotes, when enabled) in blockquotes
+
+CommonMark mode disallows:
+
+*   Code directly following a paragraph
+*   ATX-headings (`# Hash headings`) without spacing after opening hashes
+    or and before closing hashes
+*   Setext headings (`Underline headings\n---`) when following a paragraph
+*   Newlines in link and image titles
+*   White space in link and image URLs in auto-links (links in brackets,
+    `<` and `>`)
+*   Lazy blockquote continuation, lines not preceded by a closing angle
+    bracket (`>`), for lists, code, and thematicBreak
+
+##### `options.footnotes`
+
+```md
+Something something[^or something?].
+
+And something else[^1].
+
+[^1]: This reference footnote contains a paragraph...
+
+    * ...and a list
+```
+
+Footnotes mode (`boolean`, default: `false`) enables reference footnotes and
+inline footnotes.  Both are wrapped in square brackets and preceded by a caret
+(`^`), and can be referenced from inside other footnotes.
+
+##### `options.blocks`
+
+```md
+<block>foo
+</block>
+```
+
+Blocks (`Array.<string>`, default: list of [block HTML elements][blocks])
+exposes let’s users define block-level HTML elements.
+
+##### `options.pedantic`
+
+```md
+Check out some_file_name.txt
+```
+
+Pedantic mode (`boolean`, default: `false`) turns on:
+
+*   Emphasis (`_alpha_`) and importance (`__bravo__`) with underscores
+    in words
+*   Unordered lists with different markers (`*`, `-`, `+`)
+*   If `commonmark` is also turned on, ordered lists with different
+    markers (`.`, `)`)
+*   And pedantic mode removes less spaces in list-items (at most four,
+    instead of the whole indent)
+
+### `parse.Parser`
+
+Access to the [parser][], if you need it.
+
+## Extending the Parser
+
+Most often, using transformers to manipulate a syntax tree produces
+the desired output.  Sometimes, mainly when introducing new syntactic
+entities with a certain level of precedence, interfacing with the parser
+is necessary.
+
+If the `remark-parse` plug-in is used, it adds a [`Parser`][parser] constructor
+to the `processor`.  Other plug-ins can add tokenizers to the parser’s prototype
+to change how markdown is parsed.
+
+The below plug-in adds a [tokenizer][] for at-mentions.
+
+```js
+module.exports = mentions;
+
+function mentions() {
+  var Parser = this.Parser;
+  var tokenizers = Parser.prototype.inlineTokenizers;
+  var methods = Parser.prototype.inlineMethods;
+
+  /* Add an inline tokenizer (defined in the following example). */
+  tokenizers.mention = tokenizeMention;
+
+  /* Run it just before `text`. */
+  methods.splice(methods.indexOf('text'), 0, 'mention');
+}
+```
+
+### `Parser#blockTokenizers`
+
+An object mapping tokenizer names to [tokenizer][]s.  These
+tokenizers (for example: `fencedCode`, `table`, and `paragraph`) eat
+from the start of a value to a line ending.
+
+### `Parser#blockMethods`
+
+Array of `blockTokenizers` names (`string`) specifying the order in
+which they run.
+
+### `Parser#inlineTokenizers`
+
+An object mapping tokenizer names to [tokenizer][]s.  These tokenizers
+(for example: `url`, `reference`, and `emphasis`) eat from the start
+of a value.  To increase performance, they depend on [locator][]s.
+
+### `Parser#inlineMethods`
+
+Array of `inlineTokenizers` names (`string`) specifying the order in
+which they run.
+
+### `function tokenizer(eat, value, silent)`
+
+```js
+tokenizeMention.notInLink = true;
+tokenizeMention.locator = locateMention;
+
+function tokenizeMention(eat, value, silent) {
+  var match = /^@(\w+)/.exec(value);
+
+  if (match) {
+    if (silent) {
+      return true;
+    }
+
+    return eat(match[0])({
+      type: 'link',
+      url: 'https://social-network/' + match[1],
+      children: [{type: 'text', value: match[0]}]
+    });
+  }
+}
+```
+
+The parser knows two types of tokenizers: block level and inline level.
+Block level tokenizers are the same as inline level tokenizers, with
+the exception that the latter must have a [locator][].
+
+Tokenizers _test_ whether a document starts with a certain syntactic
+entity.  In _silent_ mode, they return whether that test passes.
+In _normal_ mode, they consume that token, a process which is called
+“eating”.  Locators enable tokenizers to function faster by providing
+information on where the next entity may occur.
+
+###### Signatures
+
+*   `Node? = tokenizer(eat, value)`
+*   `boolean? = tokenizer(eat, value, silent)`
+
+###### Parameters
+
+*   `eat` ([`Function`][eat]) — Eat, when applicable, an entity
+*   `value` (`string`) — Value which may start an entity
+*   `silent` (`boolean`, optional) — Whether to detect or consume
+
+###### Properties
+
+*   `locator` ([`Function`][locator])
+    — Required for inline tokenizers
+*   `onlyAtStart` (`boolean`)
+    — Whether nodes can only be found at the beginning of the document
+*   `notInBlock` (`boolean`)
+    — Whether nodes cannot be in blockquotes, lists, or footnote
+    definitions
+*   `notInList` (`boolean`)
+    — Whether nodes cannot be in lists
+*   `notInLink` (`boolean`)
+    — Whether nodes cannot be in links
+
+###### Returns
+
+*   In _silent_ mode, whether a node can be found at the start of `value`
+*   In _normal_ mode, a node if it can be found at the start of `value`
+
+### `tokenizer.locator(value, fromIndex)`
+
+```js
+function locateMention(value, fromIndex) {
+  return value.indexOf('@', fromIndex);
+}
+```
+
+Locators are required for inline tokenization to keep the process
+performant.  Locators enable inline tokenizers to function faster by
+providing information on the where the next entity occurs.  Locators
+may be wrong, it’s OK if there actually isn’t a node to be found at
+the index they return, but they must skip any nodes.
+
+###### Parameters
+
+*   `value` (`string`) — Value which may contain an entity
+*   `fromIndex` (`number`) — Position to start searching at
+
+###### Returns
+
+Index at which an entity may start, and `-1` otherwise.
+
+### `eat(subvalue)`
+
+```js
+var add = eat('foo');
+```
+
+Eat `subvalue`, which is a string at the start of the
+[tokenize][tokenizer]d `value` (it’s tracked to ensure the correct
+value is eaten).
+
+###### Parameters
+
+*   `subvalue` (`string`) - Value to eat.
+
+###### Returns
+
+[`add`][add].
+
+### `add(node[, parent])`
+
+```js
+var add = eat('foo');
+add({type: 'text', value: 'foo'});
+```
+
+Add [positional information][location] to `node` and add it to `parent`.
+
+###### Parameters
+
+*   `node` ([`Node`][node]) - Node to patch position on and insert
+*   `parent` ([`Node`][node], optional) - Place to add `node` to in
+    the syntax tree.  Defaults to the currently processed node
+
+###### Returns
+
+The given `node`.
+
+### `add.test()`
+
+Get the [positional information][location] which would be patched on
+`node` by `add`.
+
+###### Returns
+
+[`Location`][location].
+
+### `add.reset(node[, parent])`
+
+`add`, but resets the internal location.  Useful for example in
+lists, where the same content is first eaten for a list, and later
+for list items
+
+###### Parameters
+
+*   `node` ([`Node`][node]) - Node to patch position on and insert
+*   `parent` ([`Node`][node], optional) - Place to add `node` to in
+    the syntax tree.  Defaults to the currently processed node
+
+###### Returns
+
+The given `node`.
+
+### Turning off a tokenizer
+
+In rare situations, you may want to turn off a tokenizer to avoid parsing
+that syntactic feature.  This can be done by deleting the tokenzier from
+your Parser’s `blockTokenizers` (or `blockMethods`) or `inlineTokenizers`
+(or `inlineMethods`).
+
+The following example turns off indented code blocks:
+
+```js
+delete remarkParse.Parser.prototype.blockTokenizers.indentedCode;
+```
+
+## License
+
+[MIT][license] © [Titus Wormer][author]
+
+<!-- Definitions -->
+
+[build-badge]: https://img.shields.io/travis/wooorm/remark.svg
+
+[build-status]: https://travis-ci.org/wooorm/remark
+
+[coverage-badge]: https://img.shields.io/codecov/c/github/wooorm/remark.svg
+
+[coverage-status]: https://codecov.io/github/wooorm/remark
+
+[chat-badge]: https://img.shields.io/gitter/room/wooorm/remark.svg
+
+[chat]: https://gitter.im/wooorm/remark
+
+[license]: https://github.com/wooorm/remark/blob/master/LICENSE
+
+[author]: http://wooorm.com
+
+[npm]: https://docs.npmjs.com/cli/install
+
+[unified]: https://github.com/wooorm/unified
+
+[data]: https://github.com/unifiedjs/unified#processordatakey-value
+
+[processor]: https://github.com/wooorm/remark/blob/master/packages/remark
+
+[mdast]: https://github.com/wooorm/mdast
+
+[escapes]: http://spec.commonmark.org/0.25/#backslash-escapes
+
+[node]: https://github.com/wooorm/unist#node
+
+[location]: https://github.com/wooorm/unist#location
+
+[parser]: https://github.com/wooorm/unified#processorparser
+
+[extend]: #extending-the-parser
+
+[tokenizer]: #function-tokenizereat-value-silent
+
+[locator]: #tokenizerlocatorvalue-fromindex
+
+[eat]: #eatsubvalue
+
+[add]: #addnode-parent
+
+[blocks]: https://github.com/wooorm/remark/blob/master/packages/remark-parse/lib/block-elements.json