Automatically convert some quotes to blockquotes

This commit is contained in:
Robin Ward 2013-12-13 15:31:25 -05:00
parent 1bbd1a94bb
commit a7a7387da1
2 changed files with 31 additions and 0 deletions

View File

@ -0,0 +1,23 @@
/**
If a line contains a single quote, convert it to a blockquote. For example:
"My fake plants died because I did not pretend to water them."
Would be:
<blockquote>My fake plants died because I did not pretend to water them.</blockquote>
**/
Discourse.Dialect.registerInline('"', function(str, match, prev) {
// Make sure we're on a line boundary
var last = prev[prev.length - 1];
if (typeof last === "string") { return; }
if (str.length > 2 && str.charAt(0) === '"' && str.charAt(str.length-1) === '"') {
var inner = str.substr(1, str.length-2);
if (inner.indexOf('"') === -1 && inner.indexOf("\n") === -1) {
return [str.length, ['blockquote', inner]];
}
}
});

View File

@ -29,6 +29,14 @@ test("basic cooking", function() {
cooked("brussel sproutes are *awful*.", "<p>brussel sproutes are <em>awful</em>.</p>", "it doesn't swallow periods."); cooked("brussel sproutes are *awful*.", "<p>brussel sproutes are <em>awful</em>.</p>", "it doesn't swallow periods.");
}); });
test("Auto quoting", function() {
cooked('"My fake plants died because I did not pretend to water them."',
"<p><blockquote>My fake plants died because I did not pretend to water them.</blockquote></p>",
"it converts single line quotes to blockquotes");
cooked('"hello\nworld"', "<p>\"hello<br/>world\"</p>", "It doesn't convert multi line quotes");
cooked('"hello "evil" trout"', '<p>"hello "evil" trout"</p>', "it doesn't format quotes in the middle of a line");
});
test("Traditional Line Breaks", function() { test("Traditional Line Breaks", function() {
var input = "1\n2\n3"; var input = "1\n2\n3";
cooked(input, "<p>1<br/>2<br/>3</p>", "automatically handles trivial newlines"); cooked(input, "<p>1<br/>2<br/>3</p>", "automatically handles trivial newlines");