1.7.4 • Published 6 years ago
acyort-util-md v1.7.4
acyort-util-md
- use remark to parse markdown
- use prismjs to highlight code
- use gatsby-remark-prismjs adapted
remarkandprismjs - use prettier to format
code - use github-slugger and markdown-toc to generate
toc - use remark-container to parse
:::syntax todiv.container, like vuepress/markdown-container
Usage
const { toc, parseMd, frontMatter } = require('acyort-util-md');
const md = '#heading'
const tocHTML = toc(md)
const contentHTML = parseMd(md, {
// see https://www.gatsbyjs.org/packages/gatsby-remark-prismjs/#how-to-use
highlightOpt: {}
})
// format yaml front-matter
const data = frontMatter(md)Types
interface parseMdOption {
highlightOpt?: {
classPrefix?: string,
aliases?: {
[key: string]: string
},
showLineNumbers?: boolean,
noInlineHighlight?: boolean,
}
}
declare module 'acyort-util-md' {
export function parseMd(content: string, opt?: parseMdOption): string
export function toc(md: string): string
export function frontMatter(
md: string
): {
[k: string]: any
}
}Markdown Extensions
toc and heading
use the same slug to parse html and generate toc
input
# hefd A b c
## heading2output
<!-- toc -->
<ul>
<li>
<a href="#hefd-a-b-c">hefd A b c</a>
<ul>
<li><a href="#heading2">heading2</a></li>
</ul>
</li>
</ul>
<!-- body -->
<h1 id="hefd-a-b-c" class="heading">
<a href="#hefd-a-b-c" aria-hidden="true">
<span class="icon icon-link"></span>
</a>hefd A b c
</h1>
<h2 id="heading2" class="heading">
<a href="#heading2" aria-hidden="true">
<span class="icon icon-link"></span>
</a>
heading2
</h2>code
block-container
input
::: tip
This is content
:::output
<div class="remark-container tip">
<p class="remark-container-title">TIP</p>
<p>this is content</p>
</div>front-matter
use gray-matter to format yaml
---
data1: some text
data2:
- listItem1
- listItem2
---