Resolves #37, basic Discord markdown parsing

Adds support for bold, italics, underline, strikethrough, code, and blockcode (no Syntax highlighting yet)
This commit is contained in:
Jeremy Zhang 2017-08-10 01:00:14 +00:00
parent b3d5a7e171
commit 8f56bea4cc
2 changed files with 29 additions and 2 deletions

View File

@ -169,6 +169,7 @@ body > div.navbar-fixed > nav > div {
#chatcontent > p {
display: table;
width: 90%;
}
#chatcontent > p > span {
@ -391,8 +392,7 @@ a {
display: table-header-group;
}
.chatmessage {
display: table-footer-group;
display: inline-block;
display: inline;
color: rgb(195, 196, 197);
}
@ -403,4 +403,19 @@ p.mentioned {
p.mentioned span.chatmessage {
color: #ff5252;
}
.chatmessage code {
background-color: gray;
color: lightgray;
border-radius: 5px;
padding: 2px;
}
.chatmessage code.blockcode {
width: 100%;
display: inline-block;
white-space: pre-wrap;
line-height: 15px;
padding: 5px;
}

View File

@ -603,6 +603,16 @@
}
return message;
}
function parse_message_markdown(text) {
text = text.replace(/\*\*(.*?)\*\*/g, "<b>$1</b>");
text = text.replace(/\*(.*?)\*/g, "<i>$1</i>");
text = text.replace(/__(.*?)__/g, "<u>$1</u>");
text = text.replace(/~~(.*?)~~/g, "<del>$1</del>");
text = text.replace(/\`\`\`([^]+)\`\`\`/g, "<code class=\"blockcode\">$1</code>");
text = text.replace(/\`(.*?)\`/g, "<code>$1</code>");
return text;
}
function fill_discord_messages(messages, jumpscroll) {
if (messages.length == 0) {
@ -619,11 +629,13 @@
message = parse_message_attachments(message);
message = parse_channels_in_message(message);
message.content = escapeHtml(message.content);
message.content = parse_message_markdown(message.content);
message = parse_emoji_in_message(message);
var rendered = Mustache.render(template, {"id": message.id, "full_timestamp": message.formatted_timestamp, "time": message.formatted_time, "username": message.author.username, "discriminator": message.author.discriminator, "content": nl2br(message.content)});
$("#chatcontent").append(rendered);
last = message.id;
handle_last_message_mention();
$("#chatcontent p:last-child").find(".blockcode").find("br").remove(); // Remove excessive breaks in codeblocks
}
$("html, body").animate({ scrollTop: $(document).height() }, "slow");
$('#chatcontent').linkify({