mirror of https://gitgud.io/fatchan/jschan.git
parent
09a729a3c9
commit
cbc7135c90
2 changed files with 51 additions and 56 deletions
@ -1,62 +1,57 @@ |
||||
'use strict'; |
||||
|
||||
const Posts = require(__dirname+'/../db-models/posts.js') |
||||
, quoteRegex = /^>>\d+/g |
||||
, greentextRegex = /^>[^>].+/g |
||||
, redtextRegex = /^<[^<].+/g |
||||
, boldRegex = /==.+==/g |
||||
, italicRegex = /__.+__/g |
||||
, spoilerRegex = /\|.+\|/g; |
||||
, quoteRegex = /^>>\d+$/gm |
||||
, greentextRegex = /^>[^>].+$/gm |
||||
, redtextRegex = /^<[^<].+$/gm |
||||
, boldRegex = /==.+==/gm |
||||
, italicRegex = /__.+__/gm |
||||
, linkRegex = /https?\:\/\/[^\s]+/g |
||||
, spoilerRegex = /\|.+\|/gm; |
||||
|
||||
module.exports = (board, thread, text) => { |
||||
|
||||
const lines = text.split('\n') |
||||
|
||||
for(let j = 0; j < lines.length; j++) { |
||||
//replace quotes
|
||||
const quote = lines[j].match(quoteRegex); |
||||
if (quote) { |
||||
const quotenum = quote[0].substring(2); |
||||
lines[j] = lines[j].replace(quote[0], `<a class='quote' href='/${board}/thread/${thread}#${quotenum}'>>>${quotenum}</a>`); |
||||
continue; |
||||
} |
||||
//replace greentexts
|
||||
const greentext = lines[j].match(greentextRegex); |
||||
if (greentext) { |
||||
const green = greentext[0].substring(1); |
||||
lines[j] = lines[j].replace(greentext[0], `<span class='greentext'>>${green}</span>`); |
||||
continue; |
||||
} |
||||
//replace redtexts
|
||||
const redtext = lines[j].match(redtextRegex); |
||||
if (redtext) { |
||||
const red = redtext[0].substring(1); |
||||
lines[j] = lines[j].replace(redtext[0], `<span class='redtext'><${red}</span>`); |
||||
continue; |
||||
} |
||||
//replace bolds
|
||||
const boldtext = lines[j].match(boldRegex); |
||||
if (boldtext) { |
||||
const bold = boldtext[0].substring(2, boldtext[0].length-2); |
||||
lines[j] = lines[j].replace(boldtext[0], `<strong>${bold}</strong>`); |
||||
continue; |
||||
} |
||||
//replace italics
|
||||
const italictext = lines[j].match(italicRegex); |
||||
if (italictext) { |
||||
const italic = italictext[0].substring(2, italictext[0].length-2); |
||||
lines[j] = lines[j].replace(italictext[0], `<em>${italic}</em>`); |
||||
continue; |
||||
} |
||||
//replace spoilers
|
||||
const spoilertext = lines[j].match(spoilerRegex); |
||||
if (spoilertext) { |
||||
const spoiler = spoilertext[0].substring(1, spoilertext[0].length-1); |
||||
lines[j] = lines[j].replace(spoilertext[0], `<span class='spoiler'>${spoiler}</span>`); |
||||
continue; |
||||
} |
||||
} |
||||
|
||||
return lines.join('\n'); |
||||
//redtext
|
||||
text = text.replace(redtextRegex, (match) => { |
||||
const red = match.substring(1); |
||||
return `<span class='redtext'><${red}</span>`; |
||||
}); |
||||
|
||||
//greentext
|
||||
text = text.replace(greentextRegex, (match) => { |
||||
const green = match.substring(1); |
||||
return `<span class='greentext'>>${green}</span>`; |
||||
}); |
||||
|
||||
//links
|
||||
text = text.replace(linkRegex, (match) => { |
||||
return `<a href="${match}">${match}</a>`; |
||||
}); |
||||
|
||||
//quotes
|
||||
text = text.replace(quoteRegex, (match) => { |
||||
const quotenum = match.substring(2); |
||||
return `<a class='quote' href='/${board}/thread/${thread}#${quotenum}'>>>${quotenum}</a>`; |
||||
}); |
||||
|
||||
//bold
|
||||
text = text.replace(boldRegex, (match) => { |
||||
const bold = match.substring(2, match.length-2); |
||||
return `<strong>${bold}</strong>`; |
||||
}); |
||||
|
||||
//italic
|
||||
text = text.replace(italicRegex, (match) => { |
||||
const italic = match.substring(2, match.length-2); |
||||
return `<italic>${italic}</em>`; |
||||
}); |
||||
|
||||
//spoilers
|
||||
text = text.replace(spoilerRegex, (match) => { |
||||
const spoiler = match.substring(1, match.length-1); |
||||
return `<span class='spoiler'>${spoiler}</span>`; |
||||
}); |
||||
|
||||
return text; |
||||
|
||||
} |
||||
|
Loading…
Reference in new issue