mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-08 18:54:09 -04:00
Conversion: wrap contents of inline <script> tags in CDATA sections
This commit is contained in:
parent
ba0bcb408f
commit
9d25d5ae50
@ -347,13 +347,17 @@ def xml2unicode(root, pretty_print=False):
|
||||
def xml2text(elem):
|
||||
return etree.tostring(elem, method='text', encoding=unicode, with_tail=False)
|
||||
|
||||
def escape_cdata(root):
|
||||
pat = re.compile(r'[<>&]')
|
||||
for elem in root.iterdescendants('{%s}style' % XHTML_NS, '{%s}script' % XHTML_NS):
|
||||
if elem.text and pat.search(elem.text) is not None:
|
||||
elem.text = etree.CDATA(elem.text)
|
||||
|
||||
def serialize(data, media_type, pretty_print=False):
|
||||
if isinstance(data, etree._Element):
|
||||
is_oeb_doc = media_type in OEB_DOCS
|
||||
if is_oeb_doc:
|
||||
for style in data.iterfind('.//{http://www.w3.org/1999/xhtml}style'):
|
||||
if style.text and re.search(r'[<>&]', style.text) is not None:
|
||||
style.text = etree.CDATA(style.text)
|
||||
escape_cdata(data)
|
||||
ans = xml2str(data, pretty_print=pretty_print)
|
||||
if is_oeb_doc:
|
||||
# Convert self closing div|span|a|video|audio|iframe|etc tags
|
||||
|
Loading…
x
Reference in New Issue
Block a user