|
|
@ -14,11 +14,11 @@ const greentextRegex = /^>((?!>\d+|>>/\w+(/\d*)?).*)/gm |
|
|
|
, codeRegex = /(?:(?<language>[a-z+]{1,10})\r?\n)?(?<code>[\s\S]+)/i |
|
|
|
, codeRegex = /(?:(?<language>[a-z+]{1,10})\r?\n)?(?<code>[\s\S]+)/i |
|
|
|
, splitRegex = /```([\s\S]+?)```/gm |
|
|
|
, splitRegex = /```([\s\S]+?)```/gm |
|
|
|
, trimNewlineRegex = /^\s*(\r?\n)*|(\r?\n)*$/g |
|
|
|
, trimNewlineRegex = /^\s*(\r?\n)*|(\r?\n)*$/g |
|
|
|
, diceRegex = /##(?<numdice>[1-9][0-9]{0,8})d(?<numsides>1[0-9]{1,8}|[2-9][0-9]{0,8})(?:(?<operator>[+-])(?<modifier>[1-9][0-9]{0,8}))?/gmi |
|
|
|
|
|
|
|
, getDomain = (string) => string.split(/\/\/|\//)[1] //unused atm
|
|
|
|
, getDomain = (string) => string.split(/\/\/|\//)[1] //unused atm
|
|
|
|
, escape = require(__dirname+'/escape.js') |
|
|
|
, escape = require(__dirname+'/escape.js') |
|
|
|
, { highlight, highlightAuto } = require('highlight.js') |
|
|
|
, { highlight, highlightAuto } = require('highlight.js') |
|
|
|
, { highlightOptions } = require(__dirname+'/../../configs/main.js') |
|
|
|
, { highlightOptions } = require(__dirname+'/../../configs/main.js') |
|
|
|
|
|
|
|
, diceroll = require(__dirname+'/diceroll.js') |
|
|
|
, replacements = [ |
|
|
|
, replacements = [ |
|
|
|
{ regex: pinktextRegex, cb: (match, pinktext) => `<span class='pinktext'><${pinktext}</span>` }, |
|
|
|
{ regex: pinktextRegex, cb: (match, pinktext) => `<span class='pinktext'><${pinktext}</span>` }, |
|
|
|
{ regex: greentextRegex, cb: (match, greentext) => `<span class='greentext'>>${greentext}</span>` }, |
|
|
|
{ regex: greentextRegex, cb: (match, greentext) => `<span class='greentext'>>${greentext}</span>` }, |
|
|
@ -31,11 +31,26 @@ const greentextRegex = /^>((?!>\d+|>>/\w+(/\d*)?).*)/gm |
|
|
|
{ regex: monoRegex, cb: (match, mono) => `<span class='mono'>${mono}</span>` }, |
|
|
|
{ regex: monoRegex, cb: (match, mono) => `<span class='mono'>${mono}</span>` }, |
|
|
|
{ regex: linkRegex, cb: require(__dirname+'/linkmatch.js') }, |
|
|
|
{ regex: linkRegex, cb: require(__dirname+'/linkmatch.js') }, |
|
|
|
{ regex: detectedRegex, cb: (match, detected) => `<span class='detected'>${detected}</span>` }, |
|
|
|
{ regex: detectedRegex, cb: (match, detected) => `<span class='detected'>${detected}</span>` }, |
|
|
|
{ regex: diceRegex, cb: require(__dirname+'/diceroll.js') }, |
|
|
|
{ regex: diceroll.regexMarkdown, cb: diceroll.markdown }, |
|
|
|
]; |
|
|
|
]; |
|
|
|
|
|
|
|
|
|
|
|
module.exports = { |
|
|
|
module.exports = { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
prepareMarkdown: (text, force) => { |
|
|
|
|
|
|
|
if (!text || text.length === 0) { |
|
|
|
|
|
|
|
return text; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
const chunks = text.split(splitRegex); |
|
|
|
|
|
|
|
for (let i = 0; i < chunks.length; i++) { |
|
|
|
|
|
|
|
//every other chunk will be a code block
|
|
|
|
|
|
|
|
if (i % 2 === 0) { |
|
|
|
|
|
|
|
chunks[i] = chunks[i].replace( |
|
|
|
|
|
|
|
diceroll.regexPrepare, diceroll.prepare(force)); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return chunks.join(''); |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
markdown: (text) => { |
|
|
|
markdown: (text) => { |
|
|
|
const chunks = text.split(splitRegex); |
|
|
|
const chunks = text.split(splitRegex); |
|
|
|
for (let i = 0; i < chunks.length; i++) { |
|
|
|
for (let i = 0; i < chunks.length; i++) { |
|
|
|