All checks were successful
Publish To Prod / deploy_and_publish (push) Successful in 35s
247 lines
7.4 KiB
Markdown
247 lines
7.4 KiB
Markdown
# micromark-extension-gfm
|
||
|
||
[![Build][build-badge]][build]
|
||
[![Coverage][coverage-badge]][coverage]
|
||
[![Downloads][downloads-badge]][downloads]
|
||
[![Size][size-badge]][size]
|
||
[![Sponsors][sponsors-badge]][collective]
|
||
[![Backers][backers-badge]][collective]
|
||
[![Chat][chat-badge]][chat]
|
||
|
||
**[micromark][]** extension to support GitHub flavored markdown.
|
||
This extension matches either the [GFM][] spec or github.com (default).
|
||
|
||
This package provides the low-level modules for integrating with the micromark
|
||
tokenizer and the micromark HTML compiler.
|
||
|
||
You probably shouldn’t use this package directly, but instead use
|
||
[`mdast-util-gfm`][mdast-util-gfm] with **[mdast][]** or `remark-gfm` with
|
||
**[remark][]**.
|
||
|
||
Alternatively, the extensions can be used separately:
|
||
|
||
* [`micromark/micromark-extension-gfm-autolink-literal`](https://github.com/micromark/micromark-extension-gfm-autolink-literal)
|
||
— support GFM [autolink literals][]
|
||
* [`micromark/micromark-extension-gfm-strikethrough`](https://github.com/micromark/micromark-extension-gfm-strikethrough)
|
||
— support GFM [strikethrough][]
|
||
* [`micromark/micromark-extension-gfm-table`](https://github.com/micromark/micromark-extension-gfm-table)
|
||
— support GFM [tables][]
|
||
* [`micromark/micromark-extension-gfm-tagfilter`](https://github.com/micromark/micromark-extension-gfm-tagfilter)
|
||
— support GFM [tagfilter][]
|
||
* [`micromark/micromark-extension-gfm-task-list-item`](https://github.com/micromark/micromark-extension-gfm-task-list-item)
|
||
— support GFM [tasklists][]
|
||
|
||
## Install
|
||
|
||
[npm][]:
|
||
|
||
```sh
|
||
npm install micromark-extension-gfm
|
||
```
|
||
|
||
## Use
|
||
|
||
Say we have the following file, `example.md`:
|
||
|
||
```markdown
|
||
# GFM
|
||
|
||
## Autolink literals
|
||
|
||
www.example.com, https://example.com, and contact@example.com.
|
||
|
||
## Strikethrough
|
||
|
||
~one~ or ~~two~~ tildes.
|
||
|
||
## Table
|
||
|
||
| a | b | c | d |
|
||
| - | :- | -: | :-: |
|
||
|
||
## Tag filter
|
||
|
||
<plaintext>
|
||
|
||
## Tasklist
|
||
|
||
* [ ] to do
|
||
* [x] done
|
||
```
|
||
|
||
And our script, `example.js`, looks as follows:
|
||
|
||
```js
|
||
var fs = require('fs')
|
||
var micromark = require('micromark')
|
||
var gfmSyntax = require('micromark-extension-gfm')
|
||
var gfmHtml = require('micromark-extension-gfm/html')
|
||
|
||
var doc = fs.readFileSync('example.md')
|
||
|
||
var result = micromark(doc, {
|
||
allowDangerousHtml: true,
|
||
extensions: [gfmSyntax()],
|
||
htmlExtensions: [gfmHtml]
|
||
})
|
||
|
||
console.log(result)
|
||
```
|
||
|
||
Now, running `node example` yields:
|
||
|
||
```html
|
||
<h1>GFM</h1>
|
||
<h2>Autolink literals</h2>
|
||
<p><a href="http://www.example.com">www.example.com</a>, <a href="https://example.com">https://example.com</a>, and <a href="mailto:contact@example.com">contact@example.com</a>.</p>
|
||
<h2>Strikethrough</h2>
|
||
<p><del>one</del> or <del>two</del> tildes.</p>
|
||
<h2>Table</h2>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>a</th>
|
||
<th align="left">b</th>
|
||
<th align="right">c</th>
|
||
<th align="center">d</th>
|
||
</tr>
|
||
</thead>
|
||
</table>
|
||
<h2>Tag filter</h2>
|
||
<plaintext>
|
||
<h2>Tasklist</h2>
|
||
<ul>
|
||
<li><input disabled="" type="checkbox"> to do</li>
|
||
<li><input checked="" disabled="" type="checkbox"> done</li>
|
||
</ul>
|
||
```
|
||
|
||
## API
|
||
|
||
### `html`
|
||
|
||
### `syntax(options?)`
|
||
|
||
> Note: `syntax` is the default export of this module, `html` is available at
|
||
> `micromark-extension-gfm/html`.
|
||
|
||
Support [GFM][] or markdown on github.com.
|
||
|
||
The export of `syntax` is a function that can be called with options and returns
|
||
extension for the micromark parser (to tokenize GFM; can be passed in
|
||
`extensions`).
|
||
The export of html is an extension for the default HTML compiler (can be passed
|
||
in `htmlExtensions`).
|
||
|
||
##### `options`
|
||
|
||
###### `options.singleTilde`
|
||
|
||
Passed as [`singleTilde`][single-tilde] in
|
||
[`micromark-extension-gfm-strikethrough`][mm-strikethrough].
|
||
|
||
## Related
|
||
|
||
* [`remarkjs/remark`][remark]
|
||
— markdown processor powered by plugins
|
||
* [`syntax-tree/mdast-util-gfm`](https://github.com/syntax-tree/mdast-util-gfm)
|
||
— mdast utility to support GFM
|
||
* [`syntax-tree/mdast-util-from-markdown`][from-markdown]
|
||
— mdast parser using `micromark` to create mdast from markdown
|
||
* [`syntax-tree/mdast-util-to-markdown`][to-markdown]
|
||
— mdast serializer to create markdown from mdast
|
||
* [`micromark/micromark`][micromark]
|
||
— the smallest commonmark-compliant markdown parser that exists
|
||
* [`micromark/micromark-extension-gfm-autolink-literal`](https://github.com/micromark/micromark-extension-gfm-autolink-literal)
|
||
— support GFM [autolink literals][]
|
||
* [`micromark/micromark-extension-gfm-strikethrough`](https://github.com/micromark/micromark-extension-gfm-strikethrough)
|
||
— support GFM [strikethrough][]
|
||
* [`micromark/micromark-extension-gfm-table`](https://github.com/micromark/micromark-extension-gfm-table)
|
||
— support GFM [tables][]
|
||
* [`micromark/micromark-extension-gfm-tagfilter`](https://github.com/micromark/micromark-extension-gfm-tagfilter)
|
||
— support GFM [tagfilter][]
|
||
* [`micromark/micromark-extension-gfm-task-list-item`](https://github.com/micromark/micromark-extension-gfm-task-list-item)
|
||
— support GFM [tasklists][]
|
||
|
||
## Contribute
|
||
|
||
See [`contributing.md` in `micromark/.github`][contributing] for ways to get
|
||
started.
|
||
See [`support.md`][support] for ways to get help.
|
||
|
||
This project has a [code of conduct][coc].
|
||
By interacting with this repository, organization, or community you agree to
|
||
abide by its terms.
|
||
|
||
## License
|
||
|
||
[MIT][license] © [Titus Wormer][author]
|
||
|
||
<!-- Definitions -->
|
||
|
||
[build-badge]: https://github.com/micromark/micromark-extension-gfm/workflows/main/badge.svg
|
||
|
||
[build]: https://github.com/micromark/micromark-extension-gfm/actions
|
||
|
||
[coverage-badge]: https://img.shields.io/codecov/c/github/micromark/micromark-extension-gfm.svg
|
||
|
||
[coverage]: https://codecov.io/github/micromark/micromark-extension-gfm
|
||
|
||
[downloads-badge]: https://img.shields.io/npm/dm/micromark-extension-gfm.svg
|
||
|
||
[downloads]: https://www.npmjs.com/package/micromark-extension-gfm
|
||
|
||
[size-badge]: https://img.shields.io/bundlephobia/minzip/micromark-extension-gfm.svg
|
||
|
||
[size]: https://bundlephobia.com/result?p=micromark-extension-gfm
|
||
|
||
[sponsors-badge]: https://opencollective.com/unified/sponsors/badge.svg
|
||
|
||
[backers-badge]: https://opencollective.com/unified/backers/badge.svg
|
||
|
||
[collective]: https://opencollective.com/unified
|
||
|
||
[chat-badge]: https://img.shields.io/badge/chat-discussions-success.svg
|
||
|
||
[chat]: https://github.com/micromark/micromark/discussions
|
||
|
||
[npm]: https://docs.npmjs.com/cli/install
|
||
|
||
[license]: license
|
||
|
||
[author]: https://wooorm.com
|
||
|
||
[contributing]: https://github.com/micromark/.github/blob/HEAD/contributing.md
|
||
|
||
[support]: https://github.com/micromark/.github/blob/HEAD/support.md
|
||
|
||
[coc]: https://github.com/micromark/.github/blob/HEAD/code-of-conduct.md
|
||
|
||
[micromark]: https://github.com/micromark/micromark
|
||
|
||
[from-markdown]: https://github.com/syntax-tree/mdast-util-from-markdown
|
||
|
||
[to-markdown]: https://github.com/syntax-tree/mdast-util-to-markdown
|
||
|
||
[remark]: https://github.com/remarkjs/remark
|
||
|
||
[mdast]: https://github.com/syntax-tree/mdast
|
||
|
||
[gfm]: https://github.github.com/gfm/
|
||
|
||
[mdast-util-gfm]: https://github.com/syntax-tree/mdast-util-gfm
|
||
|
||
[strikethrough]: https://github.github.com/gfm/#strikethrough-extension-
|
||
|
||
[tables]: https://github.github.com/gfm/#tables-extension-
|
||
|
||
[tasklists]: https://github.github.com/gfm/#task-list-items-extension-
|
||
|
||
[autolink literals]: https://github.github.com/gfm/#autolinks-extension-
|
||
|
||
[tagfilter]: https://github.github.com/gfm/#disallowed-raw-html-extension-
|
||
|
||
[single-tilde]: https://github.com/micromark/micromark-extension-gfm-strikethrough#optionssingletilde
|
||
|
||
[mm-strikethrough]: https://github.com/micromark/micromark-extension-gfm-strikethrough
|