aboutsummaryrefslogtreecommitdiff
path: root/lib/render.js
diff options
context:
space:
mode:
authorcel <cel@f/6sQ6d2CMxRUhLpspgGIulDxDCwYD7DzFzPNr7u5AU=.ed25519>2017-06-27 16:25:55 -1000
committercel <cel@f/6sQ6d2CMxRUhLpspgGIulDxDCwYD7DzFzPNr7u5AU=.ed25519>2017-06-27 16:27:16 -1000
commit3e303fe722d3852f27a5f8ce86cbe0cc15584649 (patch)
tree2bcc680ea53740b55c2996a06db12b863328efdd /lib/render.js
parent99d000d4bb9514c2639211a31bb6109db84ad231 (diff)
downloadpatchfoo-3e303fe722d3852f27a5f8ce86cbe0cc15584649.tar.gz
patchfoo-3e303fe722d3852f27a5f8ce86cbe0cc15584649.zip
Highlight code in markdown and git files
Diffstat (limited to 'lib/render.js')
-rw-r--r--lib/render.js20
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)
+ }
+}