diff options
Diffstat (limited to 'lib/render.js')
-rw-r--r-- | lib/render.js | 20 |
1 files changed, 20 insertions, 0 deletions
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) + } +} |