From 093ead7855431afaeb07b58ebf489f2172eac142 Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Sat, 24 Aug 2013 13:06:07 -0400 Subject: [PATCH] Support for ***bold and italics*** --- .../dialects/bold_italics_dialect.js | 32 +++++++++++++++++++ test/javascripts/components/markdown_test.js | 1 + 2 files changed, 33 insertions(+) create mode 100644 app/assets/javascripts/discourse/dialects/bold_italics_dialect.js diff --git a/app/assets/javascripts/discourse/dialects/bold_italics_dialect.js b/app/assets/javascripts/discourse/dialects/bold_italics_dialect.js new file mode 100644 index 00000000000..704b6a16465 --- /dev/null +++ b/app/assets/javascripts/discourse/dialects/bold_italics_dialect.js @@ -0,0 +1,32 @@ +/** + Markdown.js doesn't seem to do bold and italics at the same time if you surround code with + three asterisks. This adds that support. + + @event register + @namespace Discourse.Dialect +**/ +Discourse.Dialect.on("register", function(event) { + + var dialect = event.dialect, + MD = event.MD; + + /** + Handles simultaneous bold and italics + + @method parseMentions + @param {String} text the text match + @param {Array} match the match found + @param {Array} prev the previous jsonML + @return {Array} an array containing how many chars we've replaced and the jsonML content for it. + @namespace Discourse.Dialect + **/ + dialect.inline['***'] = function boldItalics(text, match, prev) { + var regExp = /^\*{3}([^\*]+)\*{3}/, + m = regExp.exec(text); + + if (m) { + return [m[0].length, ['strong', ['em'].concat(this.processInline(m[1]))]]; + } + }; + +}); diff --git a/test/javascripts/components/markdown_test.js b/test/javascripts/components/markdown_test.js index ddaee7fa5ea..877ecb6ddff 100644 --- a/test/javascripts/components/markdown_test.js +++ b/test/javascripts/components/markdown_test.js @@ -17,6 +17,7 @@ var cookedOptions = function(input, opts, expected, text) { test("basic cooking", function() { cooked("hello", "

hello

", "surrounds text with paragraphs"); + cooked("***hello***", "

hello

", "it can do bold and italics at once."); }); test("Line Breaks", function() {