From 3e303fe722d3852f27a5f8ce86cbe0cc15584649 Mon Sep 17 00:00:00 2001 From: cel Date: Tue, 27 Jun 2017 16:25:55 -1000 Subject: Highlight code in markdown and git files --- lib/render.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'lib/render.js') diff --git a/lib/render.js b/lib/render.js index ee8ce01..e9d4889 100644 --- a/lib/render.js +++ b/lib/render.js @@ -10,6 +10,7 @@ var qs = require('querystring') var u = require('./util') var multicb = require('multicb') var RenderMsg = require('./render-msg') +var Highlight = require('highlight.js') module.exports = Render @@ -83,6 +84,7 @@ function Render(app, opts) { smartypants: false, emoji: lexerRenderEmoji, renderer: new MdRenderer(this), + highlight: this.highlight.bind(this), } } @@ -368,3 +370,21 @@ Render.prototype.npmAuthorLink = function (author) { secondaryLink ? [' (', secondaryLink, ')'] : '' ] } + +// auto-highlight is slow +var useAutoHighlight = false + +Render.prototype.highlight = function (code, lang) { + if (code.length > 100000) return u.escapeHTML(code) + if (!lang && /^#!\/bin\/[^\/]*sh$/m.test(code)) lang = 'sh' + try { + return lang + ? Highlight.highlight(lang, code).value + : useAutoHighlight + ? Highlight.highlightAuto(code).value + : u.escapeHTML(code) + } catch(e) { + if (!/^Unknown language/.test(e.message)) console.trace(e) + return u.escapeHTML(code) + } +} -- cgit v1.2.3