diff --git a/zerver/lib/bugdown/fenced_code.py b/zerver/lib/bugdown/fenced_code.py index 3431e71f83..0816ec5780 100644 --- a/zerver/lib/bugdown/fenced_code.py +++ b/zerver/lib/bugdown/fenced_code.py @@ -107,6 +107,15 @@ class FencedBlockPreprocessor(markdown.preprocessors.Preprocessor): if m.group('lang'): langclass = LANG_TAG % m.group('lang') + if m.group('lang') in ('quote', 'quoted'): + paragraphs = m.group('code').split("\n\n") + quoted_paragraphs = [] + for paragraph in paragraphs: + lines = paragraph.split("\n") + quoted_paragraphs.append("\n".join("> " + line for line in lines if line != '')) + replacement = "\n\n".join(quoted_paragraphs) + return '%s\n%s\n%s'% (text[:m.start()], replacement, text[m.end():]) + # If config is not empty, then the codehighlite extension # is enabled, so we call it to highlite the code if self.codehilite_conf: diff --git a/zerver/tests.py b/zerver/tests.py index c7f1a1532f..f53aad7d84 100644 --- a/zerver/tests.py +++ b/zerver/tests.py @@ -2329,6 +2329,49 @@ def foobar(self): """ self.common_bugdown_test(fenced_code, expected_convert) + def test_fenced_quote(self): + fenced_quote = \ +"""Hamlet said: +~~~ quote +To be or **not** to be. + +That is the question +~~~""" + + expected_convert = \ +"""
Hamlet said:
++""" + self.common_bugdown_test(fenced_quote, expected_convert) + + def test_fenced_nested_quote(self): + fenced_quote = \ +"""Hamlet said: +~~~ quote +Polonius said: +> This above all: to thine ownself be true, +And it must follow, as the night the day, +Thou canst not then be false to any man. + +What good advice! +~~~""" + + expected_convert = \ +"""To be or not to be.
+That is the question
+
Hamlet said:
++""" + + self.common_bugdown_test(fenced_quote, expected_convert) + def test_dangerous_block(self): fenced_code = u'xxxxxx xxxxx xxxxxxxx xxxx. x xxxx xxxxxxxxxx:\n\n```\ "xxxx xxxx\\xxxxx\\xxxxxx"```\n\nxxx xxxx xxxxx:```xx.xxxxxxx(x\'^xxxx$\'\Polonius said:
+++This above all: to thine ownself be true,
+
+And it must follow, as the night the day,
+Thou canst not then be false to any man.What good advice!
+