changeset 841:831f208b4ea3

plugin text_syntaxes: html2text was breaking the long URLs
author souliane <souliane@mailoo.org>
date Thu, 13 Feb 2014 12:29:14 +0100
parents 58b4568ed4f2
children 429c6a0ef73d
files src/plugins/plugin_misc_text_syntaxes.py src/test/test_plugin_misc_text_syntaxes.py
diffstat 2 files changed, 15 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/plugins/plugin_misc_text_syntaxes.py	Thu Feb 13 10:42:29 2014 +0100
+++ b/src/plugins/plugin_misc_text_syntaxes.py	Thu Feb 13 12:29:14 2014 +0100
@@ -104,7 +104,12 @@
         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',
--- a/src/test/test_plugin_misc_text_syntaxes.py	Thu Feb 13 10:42:29 2014 +0100
+++ b/src/test/test_plugin_misc_text_syntaxes.py	Thu Feb 13 12:29:14 2014 +0100
@@ -86,6 +86,15 @@
         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 = "<img src=\"http://sat.goffi.org/static/images/screenshots/libervia/libervia_discussions.png\" alt=\"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)