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 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 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. # 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')