This commit is contained in:
Kovid Goyal 2009-07-22 17:31:40 -06:00
commit e89c1392a1
3 changed files with 13 additions and 7 deletions

View File

@ -384,6 +384,15 @@ def entity_to_unicode(match, exceptions=[], encoding='cp1252'):
except KeyError:
return '&'+ent+';'
_ent_pat = re.compile(r'&(\S+);')
def prepare_string_for_xml(raw, attribute=False):
raw = _ent_pat.sub(entity_to_unicode, raw)
raw = raw.replace('&', '&amp;').replace('<', '&lt;').replace('>', '&gt;')
if attribute:
raw = raw.replace('"', '&quot;').replace("'", '&apos;')
return raw
if isosx:
fdir = os.path.expanduser('~/.fonts')
try:

View File

@ -12,7 +12,7 @@ from urllib import unquote
from calibre.customize.conversion import OutputFormatPlugin
from calibre.ptempfile import TemporaryDirectory
from calibre.constants import __appname__, __version__
from calibre import strftime, guess_type
from calibre import strftime, guess_type, prepare_string_for_xml
from calibre.customize.conversion import OptionRecommendation
from lxml import etree
@ -210,6 +210,7 @@ class EPUBOutput(OutputFormatPlugin):
id, href = self.oeb.manifest.generate('calibre-logo',
'calibre-logo.png')
self.oeb.manifest.add(id, href, 'image/png', data=img_data)
title, author = map(prepare_string_for_xml, (title, author))
html = self.TITLEPAGE%dict(title=title, author=author,
date=strftime('%d %b, %Y'),
app=__appname__ +' '+__version__,

View File

@ -301,30 +301,26 @@ class FlowSplitter(object):
# Tree 1
hit_split_point = False
for elem in list(body.iterdescendants(etree.Element)):
for elem in list(body.iterdescendants()):
if elem is split_point:
hit_split_point = True
if before:
x = elem.get('id', None)
nix_element(elem)
continue
if hit_split_point:
x = elem.get('id', None)
nix_element(elem)
# Tree 2
hit_split_point = False
for elem in list(body2.iterdescendants(etree.Element)):
for elem in list(body2.iterdescendants()):
if elem is split_point2:
hit_split_point = True
if not before:
x = elem.get('id', None)
nix_element(elem, top=False)
continue
if not hit_split_point:
x = elem.get('id', None)
nix_element(elem, top=False)
body2.text = '\n'