Make inline style transformation its own re-useable function

This commit is contained in:
Kovid Goyal 2019-10-15 18:01:50 +05:30
parent be58929e95
commit 07bd906363
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -221,25 +221,7 @@ def filter_sheet(sheet, properties=()):
return changed
def transform_css(container, transform_sheet=None, transform_style=None, names=()):
if not names:
types = OEB_STYLES | OEB_DOCS
names = []
for name, mt in iteritems(container.mime_map):
if mt in types:
names.append(name)
doc_changed = False
for name in names:
mt = container.mime_map[name]
if mt in OEB_STYLES:
sheet = container.parsed(name)
filtered = transform_sheet(sheet)
if filtered:
container.dirty(name)
doc_changed = True
elif mt in OEB_DOCS:
def transform_inline_styles(container, name, transform_sheet, transform_style):
root = container.parsed(name)
changed = False
for style in root.xpath('//*[local-name()="style"]'):
@ -259,7 +241,28 @@ def transform_css(container, transform_sheet=None, transform_style=None, names=(
del elem.attrib['style']
else:
elem.set('style', force_unicode(style.getCssText(separator=' '), 'utf-8'))
if changed:
return changed
def transform_css(container, transform_sheet=None, transform_style=None, names=()):
if not names:
types = OEB_STYLES | OEB_DOCS
names = []
for name, mt in iteritems(container.mime_map):
if mt in types:
names.append(name)
doc_changed = False
for name in names:
mt = container.mime_map[name]
if mt in OEB_STYLES:
sheet = container.parsed(name)
if transform_sheet(sheet):
container.dirty(name)
doc_changed = True
elif mt in OEB_DOCS:
if transform_inline_styles(container, name, transform_sheet, transform_style):
container.dirty(name)
doc_changed = True