#!/usr/bin/env python2 # vim:fileencoding=utf-8 # License: GPLv3 Copyright: 2019, Kovid Goyal from __future__ import absolute_import, division, print_function, unicode_literals def html2text(html): from html2text import HTML2Text import re if isinstance(html, bytes): from calibre.ebooks.chardet import xml_to_unicode html = xml_to_unicode(html, strip_encoding_pats=True, resolve_entities=True)[0] # replace tags with as becomes emphasis in html2text html = re.sub( r'<\s*(?P/?)\s*[uU]\b(?P[^>]*)>', r'<\gspan\g>', html) h2t = HTML2Text() h2t.default_image_alt = _('Unnamed image') h2t.body_width = 0 h2t.single_line_break = True h2t.emphasis_mark = '*' return h2t.handle(html) def find_tests(): import unittest class TestH2T(unittest.TestCase): def test_html2text_behavior(self): for src, expected in { 'test': 'test\n', 'test': '*test*\n', 'other': '[other](http://else.where/other)\n', '': '![Unnamed image](test.jpeg)\n', 'test dest': 'test dest\n', '<>a': '<>a\n', '

a

b': 'a\nb\n', }.items(): self.assertEqual(html2text(src), expected) return unittest.defaultTestLoader.loadTestsFromTestCase(TestH2T)