def test_tree_line_generator(self): from quotequail import _html tree = _html.get_html_tree('<div>foo <span>bar</span><br>baz</div>') data = [result for result in _html.tree_line_generator(tree)] div = tree.xpath('div')[0] br = tree.xpath('div/br')[0] span = tree.xpath('div/span')[0] self.assertEqual(data, [ ((div, 'begin'), (br, 'begin'), 0, 'foo bar'), ((br, 'end'), (div, 'end'), 0, 'baz'), ]) data = [ result for result in _html.tree_line_generator(tree, max_lines=1) ] div = tree.xpath('div')[0] br = tree.xpath('div/br')[0] self.assertEqual(data, [ ((div, 'begin'), (br, 'begin'), 0, 'foo bar'), ]) tree = _html.get_html_tree('<div><h1>foo</h1>bar</div>') data = [result for result in _html.tree_line_generator(tree)] div = tree.xpath('div')[0] h1 = tree.xpath('div/h1')[0] self.assertEqual(data, [ ((h1, 'begin'), (h1, 'end'), 0, 'foo'), ((h1, 'end'), (div, 'end'), 0, 'bar'), ]) tree = _html.get_html_tree( '<div><blockquote>hi</blockquote>world</div>') data = [result for result in _html.tree_line_generator(tree)] div = tree.xpath('div')[0] blockquote = tree.xpath('div/blockquote')[0] self.assertEqual(data, [ ((blockquote, 'begin'), (blockquote, 'end'), 1, 'hi'), ((blockquote, 'end'), (div, 'end'), 0, 'world'), ]) tree = _html.get_html_tree(''' <table> <tr><td>Subject: </td><td>the subject</td></tr> <tr><td>From: </td><td>from line</td></tr> </table>''') data = [result for result in _html.tree_line_generator(tree)] tr1, tr2 = tree.xpath('table/tr') self.assertEqual(data, [ ((tr1, 'begin'), (tr1, 'end'), 0, 'Subject: the subject'), ((tr2, 'begin'), (tr2, 'end'), 0, 'From: from line'), ])
def test_tree_line_generator(self): from quotequail import _html tree = _html.get_html_tree('<div>foo <span>bar</span><br>baz</div>') data = [result for result in _html.tree_line_generator(tree)] div = tree.xpath('div')[0] br = tree.xpath('div/br')[0] span = tree.xpath('div/span')[0] self.assertEqual(data, [ ((div, 'begin'), (br, 'begin'), 0, 'foo bar'), ((br, 'end'), (div, 'end'), 0, 'baz'), ]) data = [result for result in _html.tree_line_generator(tree, max_lines=1)] div = tree.xpath('div')[0] br = tree.xpath('div/br')[0] self.assertEqual(data, [ ((div, 'begin'), (br, 'begin'), 0, 'foo bar'), ]) tree = _html.get_html_tree('<div><h1>foo</h1>bar</div>') data = [result for result in _html.tree_line_generator(tree)] div = tree.xpath('div')[0] h1 = tree.xpath('div/h1')[0] self.assertEqual(data, [ ((h1, 'begin'), (h1, 'end'), 0, 'foo'), ((h1, 'end'), (div, 'end'), 0, 'bar'), ]) tree = _html.get_html_tree( '<div><blockquote>hi</blockquote>world</div>') data = [result for result in _html.tree_line_generator(tree)] div = tree.xpath('div')[0] blockquote = tree.xpath('div/blockquote')[0] self.assertEqual(data, [ ((blockquote, 'begin'), (blockquote, 'end'), 1, 'hi'), ((blockquote, 'end'), (div, 'end'), 0, 'world'), ]) tree = _html.get_html_tree(''' <table> <tr><td>Subject: </td><td>the subject</td></tr> <tr><td>From: </td><td>from line</td></tr> </table>''') data = [result for result in _html.tree_line_generator(tree)] tr1, tr2 = tree.xpath('table/tr') self.assertEqual(data, [ ((tr1, 'begin'), (tr1, 'end'), 0, 'Subject: the subject'), ((tr2, 'begin'), (tr2, 'end'), 0, 'From: from line'), ])
def test_trim_before(self): from quotequail import _html html = '<div>A<span>B</span>C<span>D</span>E</div>' tree = _html.get_html_tree(html) _html.trim_tree_before(tree.find('div/span')) self.assertEqual(_html.render_html_tree(tree), '<div><span>B</span>C<span>D</span>E</div>') tree = _html.get_html_tree(html) _html.trim_tree_before(tree.find('div/span[2]')) self.assertEqual(_html.render_html_tree(tree), '<div><span>D</span>E</div>') tree = _html.get_html_tree(html) _html.trim_tree_before(tree.find('div/span'), include_element=False) self.assertEqual(_html.render_html_tree(tree), '<div>C<span>D</span>E</div>') tree = _html.get_html_tree(html) _html.trim_tree_before(tree.find('div/span[2]'), include_element=False) self.assertEqual(_html.render_html_tree(tree), '<div>E</div>')