1 | const R = require('ramda')
|
2 | const MarkdownIt = require('markdown-it')
|
3 | const parsing = require('./parsing')
|
4 |
|
5 | const 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 |
|
30 | const parseString = (string, filename, sourcePaths) =>
|
31 | markdownIt.render(string.trim()).trim()
|
32 |
|
33 | const fromFile = R.partial(parsing.fromFile, [parseString])
|
34 |
|
35 | const fromString = R.partial(parsing.fromString, [parseString])
|
36 |
|
37 | module.exports = {
|
38 | markdownIt,
|
39 | parseString,
|
40 | fromFile,
|
41 | fromString
|
42 | }
|