From 3954f69514cf763fd28cc5713fbde314423d6ab6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9gis=20Hanol?= Date: Mon, 23 Mar 2015 16:33:41 +0100 Subject: [PATCH] FIX: hoisting issue with regexp replacement patterns --- app/assets/javascripts/discourse/dialects/dialect.js | 4 +++- test/javascripts/lib/markdown-test.js.es6 | 4 ++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/discourse/dialects/dialect.js b/app/assets/javascripts/discourse/dialects/dialect.js index 9d0cbef8d..e5b904840 100644 --- a/app/assets/javascripts/discourse/dialects/dialect.js +++ b/app/assets/javascripts/discourse/dialects/dialect.js @@ -278,7 +278,9 @@ Discourse.Dialect = { var keys = Object.keys(hoisted); if (keys.length) { keys.forEach(function(key) { - result = result.replace(new RegExp(key, "g"), hoisted[key]); + result = result.replace(new RegExp(key, "g"), function() { + return hoisted[key]; + }); }); } diff --git a/test/javascripts/lib/markdown-test.js.es6 b/test/javascripts/lib/markdown-test.js.es6 index f5859165f..25c2a6901 100644 --- a/test/javascripts/lib/markdown-test.js.es6 +++ b/test/javascripts/lib/markdown-test.js.es6 @@ -531,4 +531,8 @@ test("code blocks/spans hoisting", function() { cooked("```\n\n some code\n```", "

    some code

", "it works when nesting standard markdown code blocks within a fenced code block"); + + cooked("`$&`", + "

$&

", + "it works even when hoisting special replacement patterns"); });