feat: html code highlighter

This commit is contained in:
Nicolas Giard
2018-09-16 00:35:03 -04:00
parent 2c6a95f900
commit 578ea577f0
15 changed files with 190 additions and 22 deletions

View File

@@ -1 +1,5 @@
module.exports = {}
module.exports = {
init($, config) {
}
}

View File

@@ -1 +1,5 @@
module.exports = {}
module.exports = {
init($, config) {
}
}

View File

@@ -0,0 +1,17 @@
const hljs = require('highlight.js')
module.exports = {
async init($, config) {
$('pre > code').each((idx, elm) => {
const lang = $(elm).attr('lang')
if (lang) {
$(elm).html(hljs.highlight(lang, $(elm).text(), true).value)
} else {
const result = hljs.highlightAuto($(elm).text())
$(elm).html(result.value)
$(elm).attr('lang', result.language)
}
$(elm).parent().addClass('hljs')
})
}
}

View File

@@ -1,5 +1,19 @@
const _ = require('lodash')
const cheerio = require('cheerio')
module.exports = {
async render() {
return this.input
const $ = cheerio.load(this.input)
if ($.root().children().length < 1) {
return ''
}
for (let child of this.children) {
const renderer = require(`../${_.kebabCase(child.key)}/renderer.js`)
renderer.init($, child.config)
}
return $.html()
}
}

View File

@@ -23,11 +23,7 @@ const mathRegex = [
]
module.exports = {
key: 'common/mathjax',
title: 'Mathjax',
dependsOn: [],
props: [],
init (conf) {
init ($, config) {
mathjax.config({
MathJax: {
jax: ['input/TeX', 'input/MathML', 'output/SVG'],

View File

@@ -1,4 +1,4 @@
key: htmlMedia
key: htmlMediaplayers
title: Media Players
description: Embed players such as Youtube, Vimeo, Soundcloud, etc.
author: requarks.io

View File

@@ -1 +1,5 @@
module.exports = {}
module.exports = {
init($, config) {
}
}

View File

@@ -1 +1,5 @@
module.exports = {}
module.exports = {
init($, config) {
}
}

View File

@@ -1 +1,5 @@
module.exports = {}
module.exports = {
init($, config) {
}
}

View File

@@ -1 +1,5 @@
module.exports = {}
module.exports = {
init($, config) {
}
}

View File

@@ -25,12 +25,11 @@ module.exports = {
typographer: this.config.typographer,
quotes: _.get(quoteStyles, this.config.quotes, quoteStyles.English),
highlight(str, lang) {
return '<pre><code>' + _.escape(str) + '</code></pre>'
return `<pre><code lang="${lang}">${_.escape(str)}</code></pre>`
}
})
for (let child of this.children) {
console.info(child)
const renderer = require(`../${_.kebabCase(child.key)}/renderer.js`)
renderer.init(mkdown, child.config)
}