feat: html code highlighter
This commit is contained in:
@@ -1 +1,5 @@
|
||||
module.exports = {}
|
||||
module.exports = {
|
||||
init($, config) {
|
||||
|
||||
}
|
||||
}
|
||||
|
@@ -1 +1,5 @@
|
||||
module.exports = {}
|
||||
module.exports = {
|
||||
init($, config) {
|
||||
|
||||
}
|
||||
}
|
||||
|
17
server/modules/rendering/html-codehighlighter/renderer.js
Normal file
17
server/modules/rendering/html-codehighlighter/renderer.js
Normal 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')
|
||||
})
|
||||
}
|
||||
}
|
@@ -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()
|
||||
}
|
||||
}
|
||||
|
@@ -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'],
|
||||
|
@@ -1,4 +1,4 @@
|
||||
key: htmlMedia
|
||||
key: htmlMediaplayers
|
||||
title: Media Players
|
||||
description: Embed players such as Youtube, Vimeo, Soundcloud, etc.
|
||||
author: requarks.io
|
||||
|
@@ -1 +1,5 @@
|
||||
module.exports = {}
|
||||
module.exports = {
|
||||
init($, config) {
|
||||
|
||||
}
|
||||
}
|
||||
|
@@ -1 +1,5 @@
|
||||
module.exports = {}
|
||||
module.exports = {
|
||||
init($, config) {
|
||||
|
||||
}
|
||||
}
|
||||
|
@@ -1 +1,5 @@
|
||||
module.exports = {}
|
||||
module.exports = {
|
||||
init($, config) {
|
||||
|
||||
}
|
||||
}
|
||||
|
@@ -1 +1,5 @@
|
||||
module.exports = {}
|
||||
module.exports = {
|
||||
init($, config) {
|
||||
|
||||
}
|
||||
}
|
||||
|
@@ -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)
|
||||
}
|
||||
|
Reference in New Issue
Block a user