UNPKG

1.14 kBJavaScriptView Raw
1const R = require('ramda')
2const MarkdownIt = require('markdown-it')
3const parsing = require('./parsing')
4
5const markdownIt = new MarkdownIt({
6 html: true,
7 linkify: true,
8 typographer: true
9})
10 .use(require('markdown-it-anchor'))
11 .use(require('markdown-it-include'))
12 .use(require('markdown-it-implicit-figures'))
13 .use(require('markdown-it-mark'))
14 .use(require('markdown-it-container'), 'intro')
15 .use(require('markdown-it-container'), 'details', {
16 validate (params) {
17 return params.trim().match(/^details\s+(.*)$/)
18 },
19
20 render (tokens, idx) {
21 const { info, nesting } = tokens[idx]
22 const isOpening = nesting === 1
23 const [, summary] = info.trim().match(/^details\s+(.*)$/) || []
24 return isOpening
25 ? `<details><summary>${summary}</summary>\n`
26 : '</details>\n'
27 }
28 })
29
30const parseString = (string, filename, sourcePaths) =>
31 markdownIt.render(string.trim()).trim()
32
33const fromFile = R.partial(parsing.fromFile, [parseString])
34
35const fromString = R.partial(parsing.fromString, [parseString])
36
37module.exports = {
38 markdownIt,
39 parseString,
40 fromFile,
41 fromString
42}