def _render_change_replace_lines(self, differ, i1, i2, j1, j2, old_lines, new_lines): replace_new_lines = [] for i, j in zip(range(i1, i2), range(j1, j2)): old_line = old_lines[i] new_line = new_lines[j] parser = HTMLParser() old_regions, new_regions = \ get_line_changed_regions(parser.unescape(strip_tags(old_line)), parser.unescape(strip_tags(new_line))) old_line = highlightregion(old_line, old_regions) new_line = highlightregion(new_line, new_regions) yield ( '<tr class="replace-old">' ' <td class="marker">~</td>' ' <td class="marker"> </td>' ' <td class="line rich-text">%s</td>' '</tr>' % old_line) replace_new_lines.append(new_line) for line in replace_new_lines: yield ( '<tr class="replace-new">' ' <td class="marker"> </td>' ' <td class="marker">~</td>' ' <td class="line rich-text">%s</td>' '</tr>' % line)
def _render_change_replace_lines(self, differ, i1, i2, j1, j2, old_lines, new_lines): replace_new_lines = [] for i, j in zip(range(i1, i2), range(j1, j2)): old_line = old_lines[i] new_line = new_lines[j] old_regions, new_regions = \ get_line_changed_regions(unescape(strip_tags(old_line)), unescape(strip_tags(new_line))) old_line = highlightregion(old_line, old_regions) new_line = highlightregion(new_line, new_regions) yield ('<tr class="replace-old">' ' <td class="marker">~</td>' ' <td class="marker"> </td>' ' <td class="line rich-text">%s</td>' '</tr>' % old_line) replace_new_lines.append(new_line) for line in replace_new_lines: yield ('<tr class="replace-new">' ' <td class="marker"> </td>' ' <td class="marker">~</td>' ' <td class="line rich-text">%s</td>' '</tr>' % line)
def test_html_and_range_spanning_entities(self): """Testing highlightregion with HTML string and range spanning entities """ self.assertEqual(highlightregion('"foo"', [(0, 1)]), '<span class="hl">"</span>foo"') self.assertEqual(highlightregion('"foo"', [(2, 5)]), '"f<span class="hl">oo"</span>')
def test_html_and_range_spanning_entities(self): """Testing highlightregion with HTML string and range spanning entities """ self.assertEqual( highlightregion('"foo"', [(0, 1)]), '<span class="hl">"</span>foo"') self.assertEqual( highlightregion('"foo"', [(2, 5)]), '"f<span class="hl">oo"</span>')
def test_html_and_range_spanning_tags(self): """Testing highlightregion with HTML string and range spanning tags""" self.assertEqual( highlightregion('<span class="xy">abc</span>123', [(1, 4)]), '<span class="xy">a<span class="hl">bc</span></span>' '<span class="hl">1</span>23') self.assertEqual( highlightregion('<span class="xy">abc</span>' '<span class="z">12</span>3', [(1, 4)]), '<span class="xy">a<span class="hl">bc</span></span>' '<span class="z"><span class="hl">1</span>2</span>3')
def test_html_and_full_range_spanning_entities(self): """Testing highlightregion with HTML string and full text range spanning entities """ self.assertEqual( highlightregion('foo"bar', [(0, 7)]), '<span class="hl">foo"bar</span>')
def test_html_and_range_spanning_entities_inside_tag(self): """Testing highlightregion with HTML string and range spanning entities inside tag """ self.assertEqual( highlightregion('foo=<span class="ab">"foo"</span>)', [(4, 9)]), 'foo=<span class="ab"><span class="hl">"foo"' '</span></span>)')
def test_html_and_multiple_ranges_spanning_tags(self): """Testing highlightregion with HTML string and multiple ranges spanning tags """ self.assertEqual( highlightregion('foo<span class="xy">abc</span>' '<span class="z">12</span>3', [(0, 6), (7, 9)]), '<span class="hl">foo</span><span class="xy">' '<span class="hl">abc</span></span><span class="z">1' '<span class="hl">2</span></span><span class="hl">3</span>')
def test_html_and_range(self): """Testing highlightregion with HTML string and range""" self.assertEqual( highlightregion('<span class="xy">a</span>bc', [(0, 1)]), '<span class="xy"><span class="hl">a</span></span>bc')
def test_plain_text_and_range(self): """Testing highlightregion with plain text string and range""" self.assertEqual(highlightregion('abc', [(0, 1)]), '<span class="hl">a</span>bc')
def test_plain_text_and_full_range(self): """Testing highlightregion with plain text string and full text range """ self.assertEqual(highlightregion('abc', [(0, 3)]), '<span class="hl">abc</span>')
def test_plain_text(self): """Testing highlightregion with plain text string and no range""" self.assertEqual(highlightregion('abc', None), 'abc')
def testHighlightRegion(self): """Testing highlightregion""" self.assertEquals(highlightregion("", None), "") self.assertEquals(highlightregion("abc", None), "abc") self.assertEquals(highlightregion("abc", [(0, 3)]), '<span class="hl">abc</span>') self.assertEquals(highlightregion("abc", [(0, 1)]), '<span class="hl">a</span>bc') self.assertEquals(highlightregion( '<span class="xy">a</span>bc', [(0, 1)]), '<span class="xy"><span class="hl">a</span></span>bc') self.assertEquals(highlightregion( '<span class="xy">abc</span>123', [(1, 4)]), '<span class="xy">a<span class="hl">bc</span></span>' + '<span class="hl">1</span>23') self.assertEquals(highlightregion( '<span class="xy">abc</span><span class="z">12</span>3', [(1, 4)]), '<span class="xy">a<span class="hl">bc</span></span>' + '<span class="z"><span class="hl">1</span>2</span>3') self.assertEquals(highlightregion( 'foo<span class="xy">abc</span><span class="z">12</span>3', [(0, 6), (7, 9)]), '<span class="hl">foo</span><span class="xy">' + '<span class="hl">abc</span></span><span class="z">1' + '<span class="hl">2</span></span><span class="hl">3</span>') self.assertEquals(highlightregion( 'foo"bar', [(0, 7)]), '<span class="hl">foo"bar</span>') self.assertEquals(highlightregion( '"foo"', [(0, 1)]), '<span class="hl">"</span>foo"') self.assertEquals(highlightregion( '"foo"', [(2, 5)]), '"f<span class="hl">oo"</span>') self.assertEquals(highlightregion( 'foo=<span class="ab">"foo"</span>)', [(4, 9)]), 'foo=<span class="ab"><span class="hl">"foo"' + '</span></span>)')
def testHighlightRegion(self): """Testing highlightregion""" self.assertEquals(highlightregion("", None), "") self.assertEquals(highlightregion("abc", None), "abc") self.assertEquals(highlightregion("abc", [(0, 3)]), '<span class="hl">abc</span>') self.assertEquals(highlightregion("abc", [(0, 1)]), '<span class="hl">a</span>bc') self.assertEquals( highlightregion('<span class="xy">a</span>bc', [(0, 1)]), '<span class="xy"><span class="hl">a</span></span>bc') self.assertEquals( highlightregion('<span class="xy">abc</span>123', [(1, 4)]), '<span class="xy">a<span class="hl">bc</span></span>' + '<span class="hl">1</span>23') self.assertEquals( highlightregion( '<span class="xy">abc</span><span class="z">12</span>3', [(1, 4)]), '<span class="xy">a<span class="hl">bc</span></span>' + '<span class="z"><span class="hl">1</span>2</span>3') self.assertEquals( highlightregion( 'foo<span class="xy">abc</span><span class="z">12</span>3', [(0, 6), (7, 9)]), '<span class="hl">foo</span><span class="xy">' + '<span class="hl">abc</span></span><span class="z">1' + '<span class="hl">2</span></span><span class="hl">3</span>') self.assertEquals(highlightregion('foo"bar', [(0, 7)]), '<span class="hl">foo"bar</span>') self.assertEquals(highlightregion('"foo"', [(0, 1)]), '<span class="hl">"</span>foo"') self.assertEquals(highlightregion('"foo"', [(2, 5)]), '"f<span class="hl">oo"</span>') self.assertEquals( highlightregion('foo=<span class="ab">"foo"</span>)', [(4, 9)]), 'foo=<span class="ab"><span class="hl">"foo"' + '</span></span>)')
def test_empty_string(self): """Testing highlightregion with empty string and no range""" self.assertEqual(highlightregion('', None), '')