mdast-util-gfm-strikethrough

mdast extension to parse and serialize GFM strikethrough

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
mdast-util-gfm-strikethrough
502.0.09 months ago4 years agoMinified + gzip package size for mdast-util-gfm-strikethrough in KB

Readme

mdast-util-gfm-strikethrough
!Buildbuild-badgebuild !Coveragecoverage-badgecoverage !Downloadsdownloads-badgedownloads !Sizesize-badgesize !Sponsorssponsors-badgecollective !Backersbackers-badgecollective !Chatchat-badgechat
mdast 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 into mdast-util-from-markdownmdast-util-from-markdown (to support parsing strikethrough in markdown into a syntax tree) and mdast-util-to-markdownmdast-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 with mdast-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-strikethroughextension.
When you don’t need a syntax tree, you can use micromarkmicromark directly with micromark-extension-gfm-strikethrough.
When you are working with syntax trees and want all of GFM, use mdast-util-gfmmdast-util-gfm instead.
All these packages are used remark-gfmremark-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-hastmdast-util-to-hast. If you want a different element, you should configure that utility.

Install

This package is ESM onlyesm. In Node.js (version 16+), install with npm:
npm install mdast-util-gfm-strikethrough

In Deno with esm.shesmsh:
import {gfmStrikethroughFromMarkdown, gfmStrikethroughToMarkdown} from 'https://esm.sh/mdast-util-gfm-strikethrough@2'

In browsers with esm.shesmsh:
<script type="module">
  import {gfmStrikethroughFromMarkdown, gfmStrikethroughToMarkdown} from 'https://esm.sh/mdast-util-gfm-strikethrough@2?bundle'
</script>

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 identifiers gfmStrikethroughFromMarkdownapi-gfm-strikethrough-from-markdown and gfmStrikethroughToMarkdownapi-gfm-strikethrough-to-markdown. There is no default export.

gfmStrikethroughFromMarkdown()

Create an extension for mdast-util-from-markdownmdast-util-from-markdown to enable GFM strikethrough in markdown.
Returns
Extension for mdast-util-from-markdown to enable GFM strikethrough (FromMarkdownExtensionfrom-markdown-extension).

gfmStrikethroughToMarkdown()

Create an extension for mdast-util-to-markdownmdast-util-to-markdown to enable GFM strikethrough in markdown.
Returns
Extension for mdast-util-to-markdown to enable GFM strikethrough (ToMarkdownExtensionto-markdown-extension).

HTML

This utility does not handle how markdown is turned to HTML. That’s done by mdast-util-to-hastmdast-util-to-hast. If you want a different element, you should configure that utility.

Syntax

See Syntax in micromark-extension-gfm-strikethroughsyntax.

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 phrasingdfn-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

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+ and mdast-util-to-markdown version 2+.

Related

— remark plugin to support GFM
— same but all of GFM (autolink literals, footnotes, strikethrough, tables,
tasklists)
— micromark extension to parse GFM strikethrough

Contribute

See contributing.mdcontributing in syntax-tree/.githubhealth for ways to get started. See support.mdsupport 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.

License

MITlicense © Titus Wormerauthor