GitHub - syntax-tree/mdast-util-gfm-strikethrough: mdast extension to parse and serialize GFM strikethrough (original) (raw)
mdast-util-gfm-strikethrough
mdast extensions to parse and serialize GFM strikethrough.
Contents
- What is this?
- When to use this
- Install
- Use
- API
- HTML
- Syntax
- Syntax tree
- Types
- Compatibility
- Related
- Contribute
- License
What is this?
This package contains two extensions that add support for GFM strikethrough syntax in markdown to mdast. These extensions plug intomdast-util-from-markdown (to support parsing strikethrough in markdown into a syntax tree) andmdast-util-to-markdown (to support serializing strikethrough in syntax trees to markdown).
When to use this
You can use these extensions when you are working withmdast-util-from-markdown
and mdast-util-to-markdown
already.
When working with mdast-util-from-markdown
, you must combine this package with micromark-extension-gfm-strikethrough.
When you don’t need a syntax tree, you can use micromarkdirectly with micromark-extension-gfm-strikethrough
.
When you are working with syntax trees and want all of GFM, usemdast-util-gfm instead.
All these packages are used remark-gfm, which focusses on making it easier to transform content by abstracting these internals away.
This utility does not handle how markdown is turned to HTML. That’s done by mdast-util-to-hast. If you want a different element, you should configure that utility.
Install
This package is ESM only. In Node.js (version 16+), install with npm:
npm install mdast-util-gfm-strikethrough
In Deno with esm.sh:
import {gfmStrikethroughFromMarkdown, gfmStrikethroughToMarkdown} from 'https://esm.sh/mdast-util-gfm-strikethrough@2'
In browsers with esm.sh:
Use
Say our document example.md
contains:
Emphasis, importance, and strikethrough.
…and our module example.js
looks as follows:
import fs from 'node:fs/promises' import {gfmStrikethrough} from 'micromark-extension-gfm-strikethrough' import {fromMarkdown} from 'mdast-util-from-markdown' import {gfmStrikethroughFromMarkdown, gfmStrikethroughToMarkdown} from 'mdast-util-gfm-strikethrough' import {toMarkdown} from 'mdast-util-to-markdown'
const doc = await fs.readFile('example.md')
const tree = fromMarkdown(doc, { extensions: [gfmStrikethrough()], mdastExtensions: [gfmStrikethroughFromMarkdown()] })
console.log(tree)
const out = toMarkdown(tree, {extensions: [gfmStrikethroughToMarkdown()]})
console.log(out)
Now, running node example
yields:
{ type: 'root', children: [ { type: 'paragraph', children: [ {type: 'emphasis', children: [{type: 'text', value: 'Emphasis'}]}, {type: 'text', value: ', '}, {type: 'strong', children: [{type: 'text', value: 'importance'}]}, {type: 'text', value: ', and '}, {type: 'delete', children: [{type: 'text', value: 'strikethrough'}]}, {type: 'text', value: '.'} ] } ] }
Emphasis, importance, and strikethrough.
API
This package exports the identifiersgfmStrikethroughFromMarkdown andgfmStrikethroughToMarkdown. There is no default export.
gfmStrikethroughFromMarkdown()
Create an extension for mdast-util-from-markdownto enable GFM strikethrough in markdown.
Returns
Extension for mdast-util-from-markdown
to enable GFM strikethrough (FromMarkdownExtension).
gfmStrikethroughToMarkdown()
Create an extension for mdast-util-to-markdown to enable GFM strikethrough in markdown.
Returns
Extension for mdast-util-to-markdown
to enable GFM strikethrough (ToMarkdownExtension).
HTML
This utility does not handle how markdown is turned to HTML. That’s done by mdast-util-to-hast. If you want a different element, you should configure that utility.
Syntax
See Syntax in micromark-extension-gfm-strikethrough.
Syntax tree
The following interfaces are added to mdast by this utility.
Nodes
Delete
interface Delete <: Parent { type: 'delete' children: [TransparentContent] }
Delete (Parent) represents contents that are no longer accurate or no longer relevant.
Delete can be used where **phrasing**content is expected. Its content model is transparent content.
For example, the following markdown:
Yields:
{ type: 'delete', children: [{type: 'text', value: 'alpha'}] }
Content model
PhrasingContent
(GFM strikethrough)
type PhrasingContentGfm = Delete | PhrasingContent
Types
This package is fully typed with TypeScript. It does not export additional types.
The Delete
type of the mdast node is exposed from @types/mdast
.
Compatibility
Projects maintained by the unified collective are compatible with maintained versions of Node.js.
When we cut a new major release, we drop support for unmaintained versions of Node. This means we try to keep the current release line,mdast-util-gfm-strikethrough@^2
, compatible with Node.js 16.
This utility works with mdast-util-from-markdown
version 2+ andmdast-util-to-markdown
version 2+.
Related
- remarkjs/remark-gfm— remark plugin to support GFM
- syntax-tree/mdast-util-gfm— same but all of GFM (autolink literals, footnotes, strikethrough, tables, tasklists)
- micromark/micromark-extension-gfm-strikethrough— micromark extension to parse GFM strikethrough
Contribute
See contributing.md in syntax-tree/.github for ways to get started. See support.md for ways to get help.
This project has a code of conduct. By interacting with this repository, organization, or community you agree to abide by its terms.