|
|
@@ -1,18 +1,25 @@ |
|
|
|
const { Remarkable } = require('remarkable'); |
|
|
|
const { linkify } = require('remarkable/linkify'); |
|
|
|
const Prism = require('prismjs'); |
|
|
|
const loadLanguages = require('prismjs/components/'); |
|
|
|
const urlSlug = require('url-slug'); |
|
|
|
const { log } = require('./logging'); |
|
|
|
const fs = require('fs'); |
|
|
|
|
|
|
|
|
|
|
|
const highlight = (str, lang) => { |
|
|
|
// TODO: Prism mentions if you try to include languages here then all of them get included |
|
|
|
// TODO: Prism recommends loading languages in the rollup stage |
|
|
|
// TODO: so irritating |
|
|
|
if(lang in Prism.languages) { |
|
|
|
return Prism.highlight(str, Prism.languages[lang], lang); |
|
|
|
} else { |
|
|
|
console.log(`!!!!!!!!!!!!!!! Language ${lang} not found in Prism.`); |
|
|
|
return ''; |
|
|
|
loadLanguages([lang]); |
|
|
|
|
|
|
|
if(lang in Prism.languages) { |
|
|
|
return Prism.highlight(str, Prism.languages[lang], lang); |
|
|
|
} else { |
|
|
|
console.log(`!!!!!!!!!!!!!!! Language ${lang} not found in Prism.`); |
|
|
|
return ''; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
@@ -37,6 +44,7 @@ const render = (raw_md, base_url, cb=null_cb) => { |
|
|
|
let [metadata, body] = split(raw_md); |
|
|
|
|
|
|
|
const renderer = new Remarkable('full', { |
|
|
|
html: true, |
|
|
|
highlight |
|
|
|
}).use(linkify).use(rem => { |
|
|
|
rem.renderer.rules.heading_open = (tokens, idx) => { |
|
|
|