mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Automatically migrate some epub|type selectors
This commit is contained in:
parent
abe30ca2fb
commit
769cf0da51
@ -93,11 +93,37 @@ def transform_declaration(decl):
|
|||||||
return changed
|
return changed
|
||||||
|
|
||||||
|
|
||||||
|
def replace_epub_type_selector(m):
|
||||||
|
which = m.group(2)
|
||||||
|
roleval = EPUB_TYPE_MAP.get(which)
|
||||||
|
if roleval is None:
|
||||||
|
return m.group()
|
||||||
|
return 'role{}"{}"'.format(m.group(1), roleval)
|
||||||
|
|
||||||
|
|
||||||
|
def epub_type_pat():
|
||||||
|
ans = getattr(epub_type_pat, 'ans', None)
|
||||||
|
if ans is None:
|
||||||
|
ans = epub_type_pat.ans = re.compile(r'epub\|type([$*~]?=)"(\S+)"')
|
||||||
|
return ans
|
||||||
|
|
||||||
|
|
||||||
|
def transform_selector(rule):
|
||||||
|
selector = rule.selectorText
|
||||||
|
if 'epub|type' in selector:
|
||||||
|
ns, num = epub_type_pat().subn(replace_epub_type_selector, selector)
|
||||||
|
if num > 0 and ns != selector:
|
||||||
|
rule.selectorText = ns
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
def transform_sheet(sheet):
|
def transform_sheet(sheet):
|
||||||
changed = False
|
changed = False
|
||||||
for rule in sheet.cssRules.rulesOfType(CSSRule.STYLE_RULE):
|
for rule in sheet.cssRules.rulesOfType(CSSRule.STYLE_RULE):
|
||||||
if transform_declaration(rule.style):
|
if transform_declaration(rule.style):
|
||||||
changed = True
|
changed = True
|
||||||
|
if transform_selector(rule):
|
||||||
|
changed = True
|
||||||
return changed
|
return changed
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user