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");
});