2023-05-24 22:49:22 +02:00
|
|
|
import slugify from '@sindresorhus/slugify';
|
2023-06-19 23:55:26 +02:00
|
|
|
import {Liquid} from 'liquidjs';
|
2023-04-24 18:28:42 +02:00
|
|
|
import markdown from 'markdown-it';
|
|
|
|
import markdownAnchor from 'markdown-it-anchor';
|
2023-03-08 21:59:19 +01:00
|
|
|
import markdownItAttrs from 'markdown-it-attrs';
|
|
|
|
import markdownDefList from 'markdown-it-deflist';
|
2023-06-09 04:18:33 +02:00
|
|
|
import markdownItFootnote from 'markdown-it-footnote';
|
2023-03-08 21:59:19 +01:00
|
|
|
import path from 'path';
|
|
|
|
|
2023-06-19 23:55:26 +02:00
|
|
|
import {renderPermalink} from './components/anchors';
|
2023-04-21 21:01:43 +02:00
|
|
|
|
2023-03-08 21:59:19 +01:00
|
|
|
/**
|
|
|
|
* Returns Markdown engine with custom configuration and plugins.
|
|
|
|
*
|
|
|
|
* @see https://github.com/markdown-it/markdown-it
|
|
|
|
* @see https://github.com/markdown-it/markdown-it-deflist
|
|
|
|
* @see https://github.com/arve0/markdown-it-attrs
|
2023-05-24 01:48:36 +02:00
|
|
|
* @see https://github.com/valeriangalliat/markdown-it-anchor
|
2023-03-08 21:59:19 +01:00
|
|
|
*/
|
|
|
|
export const markdownEngine = markdown({
|
|
|
|
html: true,
|
|
|
|
typographer: true,
|
|
|
|
})
|
|
|
|
.use(markdownDefList)
|
2023-04-21 21:01:43 +02:00
|
|
|
.use(markdownItAttrs)
|
2023-06-09 04:18:33 +02:00
|
|
|
.use(markdownItFootnote)
|
2023-04-24 18:28:42 +02:00
|
|
|
.use(markdownAnchor, {
|
2023-05-16 22:33:08 +02:00
|
|
|
level: 2,
|
2023-04-21 21:01:43 +02:00
|
|
|
permalink: renderPermalink,
|
2023-06-19 23:55:26 +02:00
|
|
|
slugify: s => slugify(s),
|
2023-04-21 21:01:43 +02:00
|
|
|
});
|
2023-03-08 21:59:19 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Returns LiquidJS engine with custom configuration.
|
|
|
|
*
|
|
|
|
* @see https://liquidjs.com/
|
|
|
|
*/
|
|
|
|
export const liquidEngine = new Liquid({
|
|
|
|
root: [
|
|
|
|
path.resolve(__dirname, '../_includes/'),
|
|
|
|
path.resolve(__dirname, '../'),
|
|
|
|
],
|
|
|
|
extname: '.liquid',
|
|
|
|
strictFilters: true,
|
|
|
|
jsTruthy: true,
|
|
|
|
});
|