diff options
author | cel <cel@f/6sQ6d2CMxRUhLpspgGIulDxDCwYD7DzFzPNr7u5AU=.ed25519> | 2017-06-27 16:25:55 -1000 |
---|---|---|
committer | cel <cel@f/6sQ6d2CMxRUhLpspgGIulDxDCwYD7DzFzPNr7u5AU=.ed25519> | 2017-06-27 16:27:16 -1000 |
commit | 3e303fe722d3852f27a5f8ce86cbe0cc15584649 (patch) | |
tree | 2bcc680ea53740b55c2996a06db12b863328efdd /lib/render.js | |
parent | 99d000d4bb9514c2639211a31bb6109db84ad231 (diff) | |
download | patchfoo-3e303fe722d3852f27a5f8ce86cbe0cc15584649.tar.gz patchfoo-3e303fe722d3852f27a5f8ce86cbe0cc15584649.zip |
Highlight code in markdown and git files
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) + } +} |