From 0de824f73e63b8f1b2ce0708d1725acc08ef72b0 Mon Sep 17 00:00:00 2001 From: Leo Franchi Date: Fri, 3 Jan 2014 17:16:40 -0600 Subject: [PATCH] Add a zulip module to marked, which supports emoji and user mentions This is partially inspired by https://github.com/chjj/marked/pull/238 (imported from commit 03b84cde88fc8c2fe31c1003a5ce852cc364733e) --- static/js/echo.js | 9 +++-- static/third/marked/lib/marked.js | 66 +++++++++++++++++++++++++++---- 2 files changed, 63 insertions(+), 12 deletions(-) diff --git a/static/js/echo.js b/static/js/echo.js index 9002d461f3..87d689d93c 100644 --- a/static/js/echo.js +++ b/static/js/echo.js @@ -259,15 +259,15 @@ $(function () { // We used GFM + tables, so replace the list start regex for that ruleset // We remove the |[\d+]\. that matches the numbering in a numbered list marked.Lexer.rules.tables.list = /^( *)((?:\*)) [\s\S]+?(?:\n+(?=(?: *[\-*_]){3,} *(?:\n+|$))|\n{2,}(?! )(?!\1(?:\*) )\n*|\s*$)/; - // marked.Lexer.rules.tables + // Disable headings disable_markdown_regex(marked.Lexer.rules.tables, 'heading'); disable_markdown_regex(marked.Lexer.rules.tables, 'lheading'); // Disable __strong__, all - marked.InlineLexer.rules.breaks.strong = /^\*\*([\s\S]+?)\*\*(?!\*)/; - disable_markdown_regex(marked.InlineLexer.rules.breaks, 'em'); - disable_markdown_regex(marked.InlineLexer.rules.breaks, 'del'); + marked.InlineLexer.rules.zulip.strong = /^\*\*([\s\S]+?)\*\*(?!\*)/; + disable_markdown_regex(marked.InlineLexer.rules.zulip, 'em'); + disable_markdown_regex(marked.InlineLexer.rules.zulip, 'del'); marked.setOptions({ gfm: true, @@ -277,6 +277,7 @@ $(function () { sanitize: true, smartLists: true, smartypants: false, + zulip: true, renderer: r }); diff --git a/static/third/marked/lib/marked.js b/static/third/marked/lib/marked.js index e9fa94b004..09872f4d8e 100644 --- a/static/third/marked/lib/marked.js +++ b/static/third/marked/lib/marked.js @@ -453,6 +453,8 @@ var inline = { code: /^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)/, br: /^ {2,}\n(?!\s*$)/, del: noop, + emoji: noop, + usermention: noop, text: /^[\s\S]+?(?=[\\