def fix_tables(dom): _internalize_changes_markup(dom, set(['td', 'th'])) # Show table row insertions tags = set() for node in list(dom.getElementsByTagName('tr')): parent = node.parentNode if parent.tagName in ('ins', 'del'): tags.add(parent) for tag in tags: distribute(tag) # Show table cell insertions tags = set() for node in list( dom.getElementsByTagName('td') + dom.getElementsByTagName('th')): parent = node.parentNode if parent.tagName in ('ins', 'del'): tags.add(parent) for tag in tags: distribute(tag) # All other ins and del tags inside a table but not in a cell are invalid, # so remove them. for node in list( dom.getElementsByTagName('ins') + dom.getElementsByTagName('del')): parent = node.parentNode if parent.tagName in ['table', 'tbody', 'thead', 'tfoot', 'tr']: remove_node(node)
def fix_lists(dom): # <ins> and <del> tags are not allowed within <ul> or <ol> tags. # Move them to the nearest li, so that the numbering isn't interrupted. _internalize_changes_markup(dom, set(['li'])) # Find all del > li and ins > li sets. del_tags = set() ins_tags = set() for node in list(dom.getElementsByTagName('li')): parent = node.parentNode if parent.tagName == 'del': del_tags.add(parent) elif parent.tagName == 'ins': ins_tags.add(parent) # Change ins > li into li > ins. for ins_tag in ins_tags: distribute(ins_tag) # Change del > li into li.del-li > del. for del_tag in del_tags: children = list(del_tag.childNodes) unwrap(del_tag) for c in children: if c.nodeName == 'li': c.setAttribute('class', 'del-li') wrap_inner(c, 'del')
def fix_lists(dom): # <ins> and <del> tags are not allowed within <ul> or <ol> tags. # Move them to the nearest li, so that the numbering isn't interrupted. _internalize_changes_markup(dom, set(["li"])) # Find all del > li and ins > li sets. del_tags = set() ins_tags = set() for node in list(dom.getElementsByTagName("li")): parent = node.parentNode if parent.tagName == "del": del_tags.add(parent) elif parent.tagName == "ins": ins_tags.add(parent) # Change ins > li into li > ins. for ins_tag in ins_tags: distribute(ins_tag) # Change del > li into li.del-li > del. for del_tag in del_tags: children = list(del_tag.childNodes) unwrap(del_tag) for c in children: if c.nodeName == "li": c.setAttribute("class", "del-li") wrap_inner(c, "del")
def fix_tables(dom): _internalize_changes_markup(dom, set(["td", "th"])) # Show table row insertions tags = set() for node in list(dom.getElementsByTagName("tr")): parent = node.parentNode if parent.tagName in ("ins", "del"): tags.add(parent) for tag in tags: distribute(tag) # Show table cell insertions tags = set() for node in list(dom.getElementsByTagName("td") + dom.getElementsByTagName("th")): parent = node.parentNode if parent.tagName in ("ins", "del"): tags.add(parent) for tag in tags: distribute(tag) # All other ins and del tags inside a table but not in a cell are invalid, # so remove them. for node in list(dom.getElementsByTagName("ins") + dom.getElementsByTagName("del")): parent = node.parentNode if parent.tagName in ["table", "tbody", "thead", "tfoot", "tr"]: remove_node(node)
def fix_tables(dom): # Show table row insertions tags = set() for node in list(dom.getElementsByTagName('tr')): parent = node.parentNode if parent.tagName in ('ins', 'del'): tags.add(parent) for tag in tags: distribute(tag) # Show table cell insertions tags = set() for node in list(dom.getElementsByTagName('td') + dom.getElementsByTagName('th')): parent = node.parentNode if parent.tagName in ('ins', 'del'): tags.add(parent) for tag in tags: distribute(tag) # All other ins and del tags inside a table but not in a cell are invalid, # so remove them. for node in list(dom.getElementsByTagName('ins') + dom.getElementsByTagName('del')): parent = node.parentNode if parent.tagName in ['table', 'tbody', 'thead', 'tfoot', 'tr']: remove_node(node)
def test(original, distributed): original = parse_minidom(original) distributed = parse_minidom(distributed) node = get_location(original, [0]) distribute(node) assert_html_equal( minidom_tostring(original), minidom_tostring(distributed), )
def fix_lists(dom): # <ins> and <del> tags are not allowed within <ul> or <ol> tags. # Move them to the nearest li, so that the numbering isn't interrupted. # Find all del > li and ins > li sets. del_tags = set() ins_tags = set() for node in list(dom.getElementsByTagName('li')): parent = node.parentNode if parent.tagName == 'del': del_tags.add(parent) elif parent.tagName == 'ins': ins_tags.add(parent) # Change ins > li into li > ins. for ins_tag in ins_tags: distribute(ins_tag) # Change del > li into li.del-li > del. for del_tag in del_tags: children = list(del_tag.childNodes) unwrap(del_tag) for c in children: if c.nodeName == 'li': c.setAttribute('class', 'del-li') wrap_inner(c, 'del')