FIX: Check for word boundaries with censored words.

This commit is contained in:
Robin Ward 2014-10-09 16:35:27 -04:00
parent 80183f04f5
commit 3b38667274
2 changed files with 5 additions and 2 deletions

View File

@ -6,7 +6,7 @@ Discourse.Dialect.addPreProcessor(function(text) {
if (!censorRegexp) {
var split = censored.split("|");
if (split && split.length) {
censorRegexp = new RegExp(split.map(function (t) { return "(" + t.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&') + ")"; }).join("|"), "ig");
censorRegexp = new RegExp("\\b" + split.map(function (t) { return "(" + t.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&') + ")"; }).join("|") + "\\b", "ig");
}
}
@ -14,7 +14,7 @@ Discourse.Dialect.addPreProcessor(function(text) {
var m = censorRegexp.exec(text);
while (m && m[0]) {
var replacement = new Array(m[0].length+1).join('■');
text = text.replace(m[0], replacement);
text = text.replace(new RegExp("\\b" + m[0] + "\\b", "ig"), replacement);
m = censorRegexp.exec(text);
}

View File

@ -485,4 +485,7 @@ test("censoring", function() {
cooked("aw shucks, golly gee whiz.",
"<p>aw &#9632;&#9632;&#9632;&#9632;&#9632;&#9632;, golly gee &#9632;&#9632;&#9632;&#9632;.</p>",
"it censors words in the Site Settings");
cooked("you are a whizzard! I love cheesewhiz. Whiz.",
"<p>you are a whizzard! I love cheesewhiz. &#9632;&#9632;&#9632;&#9632;.</p>",
"it doesn't censor words unless they have boundaries.");
});