|
|
@ -16,7 +16,7 @@ const greentextRegex = /^>((?!>\d+|>>/\w+(/\d*)?|>># |
|
|
|
, includeSplitRegex = /(\[code\][\s\S]+?\[\/code\])/gm |
|
|
|
, includeSplitRegex = /(\[code\][\s\S]+?\[\/code\])/gm |
|
|
|
, splitRegex = /\[code\]([\s\S]+?)\[\/code\]/gm |
|
|
|
, splitRegex = /\[code\]([\s\S]+?)\[\/code\]/gm |
|
|
|
, trimNewlineRegex = /^(\s*\r?\n)*/g |
|
|
|
, trimNewlineRegex = /^(\s*\r?\n)*/g |
|
|
|
, escape = require(__dirname+'/escape.js') |
|
|
|
, simpleEscape = require(__dirname+'/escape.js') |
|
|
|
, { highlight, highlightAuto, listLanguages } = require('highlight.js') |
|
|
|
, { highlight, highlightAuto, listLanguages } = require('highlight.js') |
|
|
|
, validLanguages = listLanguages() //precompute
|
|
|
|
, validLanguages = listLanguages() //precompute
|
|
|
|
, { addCallback } = require(__dirname+'/../../redis/redis.js') |
|
|
|
, { addCallback } = require(__dirname+'/../../redis/redis.js') |
|
|
@ -72,7 +72,7 @@ module.exports = { |
|
|
|
for (let i = 0; i < chunks.length; i++) { |
|
|
|
for (let i = 0; i < chunks.length; i++) { |
|
|
|
//every other chunk will be a code block
|
|
|
|
//every other chunk will be a code block
|
|
|
|
if (i % 2 === 0) { |
|
|
|
if (i % 2 === 0) { |
|
|
|
const escaped = escape(chunks[i]); |
|
|
|
const escaped = simpleEscape(chunks[i]); |
|
|
|
const newlineFix = escaped.replace(/^\r?\n/,''); //fix ending newline because of codeblock
|
|
|
|
const newlineFix = escaped.replace(/^\r?\n/,''); //fix ending newline because of codeblock
|
|
|
|
chunks[i] = module.exports.processRegularChunk(newlineFix, permissions); |
|
|
|
chunks[i] = module.exports.processRegularChunk(newlineFix, permissions); |
|
|
|
} else if (permissions.get(Permissions.USE_MARKDOWN_CODE)){ |
|
|
|
} else if (permissions.get(Permissions.USE_MARKDOWN_CODE)){ |
|
|
@ -96,13 +96,13 @@ module.exports = { |
|
|
|
return `<span class='code hljs'><small>possible language: ${language}, relevance: ${relevance}</small>\n${value}</span>`; |
|
|
|
return `<span class='code hljs'><small>possible language: ${language}, relevance: ${relevance}</small>\n${value}</span>`; |
|
|
|
} |
|
|
|
} |
|
|
|
} else if (lang === 'aa') { |
|
|
|
} else if (lang === 'aa') { |
|
|
|
return `<span class='aa'>${escape(matches.groups.code)}</span>`; |
|
|
|
return `<span class='aa'>${simpleEscape(matches.groups.code)}</span>`; |
|
|
|
} else if (validLanguages.includes(lang)) { |
|
|
|
} else if (validLanguages.includes(lang)) { |
|
|
|
const { value } = highlight(trimFix, { language: lang, ignoreIllegals: true }); |
|
|
|
const { value } = highlight(trimFix, { language: lang, ignoreIllegals: true }); |
|
|
|
return `<span class='code hljs'><small>language: ${lang}</small>\n${value}</span>`; |
|
|
|
return `<span class='code hljs'><small>language: ${lang}</small>\n${value}</span>`; |
|
|
|
} |
|
|
|
} |
|
|
|
//else, auto highlight relevance threshold was too low, lang was not a valid language, or lang was 'plain'
|
|
|
|
//else, auto highlight relevance threshold was too low, lang was not a valid language, or lang was 'plain'
|
|
|
|
return `<span class='code'>${escape(trimFix)}</span>`; |
|
|
|
return `<span class='code'>${simpleEscape(trimFix)}</span>`; |
|
|
|
}, |
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
processRegularChunk: (text, permissions) => { |
|
|
|
processRegularChunk: (text, permissions) => { |
|
|
|