implement "special symbols" (switch certain strings for utf-8 symbols), fixes #3140

This commit is contained in:
Florian Staudacher 2012-08-08 00:20:21 +02:00
parent 8d512c22ac
commit 6613522097
2 changed files with 53 additions and 0 deletions

View file

@ -53,6 +53,30 @@
return text; return text;
}); });
// make nice little utf-8 symbols
converter.hooks.chain("preConversion", function(text) {
var input_strings = [
"<->", "->", "<-",
"(c)", "(r)", "(tm)",
"<3"
];
var output_symbols = [
"↔", "→", "←",
"©", "®", "™",
"♥"
];
// quote function from: http://stackoverflow.com/a/494122
var quote = function(str) {
return str.replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1");
};
_.each(input_strings, function(str, idx) {
var r = new RegExp(quote(str), "gi");
text = text.replace(r, output_symbols[idx]);
});
return text;
});
converter.hooks.chain("postConversion", function (text) { converter.hooks.chain("postConversion", function (text) {
return text.replace(/(\"(?:(?:http|https):\/\/)?[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(?:\/\S*)?\")(\>)/g, '$1 target="_blank">') return text.replace(/(\"(?:(?:http|https):\/\/)?[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(?:\/\S*)?\")(\>)/g, '$1 target="_blank">')
}); });

View file

@ -46,6 +46,35 @@ describe("app.helpers.textFormatter", function(){
}) })
}); });
context("symbol conversion", function() {
beforeEach(function() {
this.input_strings = [
"->", "<-", "<->",
"(c)", "(r)", "(tm)",
"<3"
];
this.output_symbols = [
"→", "←", "↔",
"©", "®", "™",
"♥"
];
});
it("correctly converts the input strings to their corresponding output symbol", function() {
_.each(this.input_strings, function(str, idx) {
var text = this.formatter.markdownify(str);
expect(text).toContain(this.output_symbols[idx]);
}, this);
});
it("converts all symbols at once", function() {
var text = this.formatter.markdownify(this.input_strings.join(" "));
_.each(this.output_symbols, function(sym) {
expect(text).toContain(sym);
});
});
});
context("non-ascii url", function() { context("non-ascii url", function() {
beforeEach(function() { beforeEach(function() {
this.evilUrls = [ this.evilUrls = [