diff --git a/src/calibre/srv/render_book.py b/src/calibre/srv/render_book.py index ac0b815daa..73cc923ea0 100644 --- a/src/calibre/srv/render_book.py +++ b/src/calibre/srv/render_book.py @@ -96,6 +96,24 @@ def check_for_maths(root): return True return False +def extract(elem): + p = elem.getparent() + if p is not None: + idx = p.index(elem) + p.remove(elem) + if elem.tail: + if idx > 0: + p[idx-1].tail = (p[idx-1].tail or '') + elem.tail + else: + p.text = (p.text or '') + elem.tail + +def has_ancestor(elem, q): + while elem is not None: + elem = elem.getparent() + if elem is q: + return True + return False + def get_length(root): strip_space = re.compile(r'\s+') ans = 0 @@ -207,6 +225,26 @@ class Container(ContainerBase): def transform_css(self): transform_css(self, transform_sheet=transform_sheet, transform_style=transform_declaration) + # Firefox flakes out sometimes when dynamically creating