From d5fb045f5b9dc6bb356aec17356941b8832f8174 Mon Sep 17 00:00:00 2001 From: souliane Date: Thu, 13 Feb 2014 12:29:14 +0100 Subject: [PATCH] plugin text_syntaxes: html2text was breaking the long URLs --- src/plugins/plugin_misc_text_syntaxes.py | 7 ++++++- src/test/test_plugin_misc_text_syntaxes.py | 9 +++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/plugins/plugin_misc_text_syntaxes.py b/src/plugins/plugin_misc_text_syntaxes.py index 7126bb85..0663dfb2 100755 --- a/src/plugins/plugin_misc_text_syntaxes.py +++ b/src/plugins/plugin_misc_text_syntaxes.py @@ -104,7 +104,12 @@ class TextSyntaxes(object): self.addSyntax(self.SYNTAX_TEXT, lambda text: escape(text), lambda xhtml: self._removeMarkups(xhtml), [TextSyntaxes.OPT_HIDDEN]) try: import markdown, html2text - self.addSyntax(self.SYNTAX_MARKDOWN, markdown.markdown, html2text.html2text, [TextSyntaxes.OPT_DEFAULT]) + + def _html2text(html, baseurl=''): + h = html2text.HTML2Text(baseurl=baseurl) + h.body_width = 0 # do not truncate the lines, it breaks the long URLs + return h.handle(html) + self.addSyntax(self.SYNTAX_MARKDOWN, markdown.markdown, _html2text, [TextSyntaxes.OPT_DEFAULT]) except ImportError: warning("markdown or html2text not found, can't use Markdown syntax") host.bridge.addMethod("syntaxConvert", ".plugin", in_sign='sssbs', out_sign='s', diff --git a/src/test/test_plugin_misc_text_syntaxes.py b/src/test/test_plugin_misc_text_syntaxes.py index 6e91a973..1e7f1662 100644 --- a/src/test/test_plugin_misc_text_syntaxes.py +++ b/src/test/test_plugin_misc_text_syntaxes.py @@ -86,6 +86,15 @@ class SanitisationTest(helpers.SatTestCase): d.addCallback(self.assertEqualXML, expected) return d + def test_html2text(self): + """Check that html2text is not inserting \n in the middle of that link. + By default lines are truncated after the 79th characters.""" + source = "\"sat\"/" + expected = "![sat](http://sat.goffi.org/static/images/screenshots/libervia/libervia_discussions.png)" + d = self.text_syntaxes.convert(source, self.text_syntaxes.SYNTAX_XHTML, self.text_syntaxes.SYNTAX_MARKDOWN) + d.addCallback(self.assertEqual, expected) + return d + def test_removeXHTMLMarkups(self): expected = """ a link another link a paragraph secret EVIL! of EVIL! Password: annoying EVIL!spam spam SPAM! """ result = self.text_syntaxes._removeMarkups(self.EVIL_HTML1)