mdast-util-gfm-strikethrough
!Buildbuild-badgebuild
!Coveragecoverage-badgecoverage
!Downloadsdownloads-badgedownloads
!Sizesize-badgesize
!Sponsorssponsors-badgecollective
!Backersbackers-badgecollective
!Chatchat-badgechatmdast extensions to parse and serialize GFM strikethrough.
Contents
* [`gfmStrikethroughFromMarkdown`](#gfmstrikethroughfrommarkdown)
* [`gfmStrikethroughToMarkdown`](#gfmstrikethroughtomarkdown)
* [Nodes](#nodes)
* [Content model](#content-model)
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
mdast-util-from-markdown (to support parsing
strikethrough in markdown into a syntax tree) and
mdast-util-to-markdown
mdast-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
extension.When you don’t need a syntax tree, you can use
micromark
micromark
directly with micromark-extension-gfm-strikethrough
.When you are working with syntax trees and want all of GFM, use
mdast-util-gfm
mdast-util-gfm instead.All these packages are used
remark-gfm
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
mdast-util-to-hast.
If you want a different element, you should configure that utility.Install
This package is ESM onlyesm. In Node.js (version 14.14+ and 16.0+), install with npm:npm install mdast-util-gfm-strikethrough
In Deno with
esm.sh
esmsh:import {gfmStrikethroughFromMarkdown, gfmStrikethroughToMarkdown} from 'https://esm.sh/mdast-util-gfm-strikethrough@1'
In browsers with
esm.sh
esmsh:<script type="module">
import {gfmStrikethroughFromMarkdown, gfmStrikethroughToMarkdown} from 'https://esm.sh/mdast-util-gfm-strikethrough@1?bundle'
</script>
Use
Say our documentexample.md
contains:*Emphasis*, **importance**, and ~~strikethrough~~.
…and our module
example.js
looks as follows:import fs from 'node:fs/promises'
import {fromMarkdown} from 'mdast-util-from-markdown'
import {toMarkdown} from 'mdast-util-to-markdown'
import {gfmStrikethrough} from 'micromark-extension-gfm-strikethrough'
import {gfmStrikethroughFromMarkdown, gfmStrikethroughToMarkdown} from 'mdast-util-gfm-strikethrough'
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
api-gfm-strikethrough-from-markdown and
gfmStrikethroughToMarkdown
api-gfm-strikethrough-to-markdown.
There is no default export.gfmStrikethroughFromMarkdown
Extension for mdast-util-from-markdown
mdast-util-from-markdown to enable
GFM strikethrough (FromMarkdownExtension
from-markdown-extension).gfmStrikethroughToMarkdown
Extension for mdast-util-to-markdown
mdast-util-to-markdown to enable
GFM strikethrough (ToMarkdownExtension
to-markdown-extension).HTML
This utility does not handle how markdown is turned to HTML. That’s done bymdast-util-to-hast
mdast-util-to-hast.
If you want a different element, you should configure that utility.Syntax
See Syntax inmicromark-extension-gfm-strikethrough
syntax.Syntax tree
The following interfaces are added to mdast by this utility.Nodes
Delete
interface Delete <: Parent {
type: 'delete'
children: [TransparentContent]
}
Delete (Parentdfn-parent) represents contents that are no longer accurate or no longer relevant.
Delete can be used where static phrasingdfn-static-phrasing-content content is expected. Its content model is transparentdfn-transparent-content content.
For example, the following markdown:
~~alpha~~
Yields:
{
type: 'delete',
children: [{type: 'text', value: 'alpha'}]
}
Content model
StaticPhrasingContent
(GFM strikethrough)
type StaticPhrasingContentGfm = Delete | StaticPhrasingContent
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 all maintained versions of Node.js. As of now, that is Node.js 14.14+ and 16.0+. Our projects sometimes work with older versions, but this is not guaranteed.This plugin works with
mdast-util-from-markdown
version 1+ and
mdast-util-to-markdown
version 1+.Related
— remark plugin to support GFM
— same but all of GFM (autolink literals, footnotes, strikethrough, tables,
tasklists)
— micromark extension to parse GFM strikethrough
Contribute
Seecontributing.md
contributing in syntax-tree/.github
health for
ways to get started.
See support.md
support for ways to get help.This project has a code of conductcoc. By interacting with this repository, organization, or community you agree to abide by its terms.