Moved href replacement of colons to hyphens to fix_fragment for the epub builder.

This commit is contained in:
Roland Meister 2010-07-14 23:07:27 +02:00
parent c8e1fd449d
commit 162cb22cbe

View File

@ -221,6 +221,11 @@ class EpubBuilder(StandaloneHTMLBuilder):
'text': ssp(self.esc(text)) 'text': ssp(self.esc(text))
}) })
def fix_fragment(self, match):
"""Return a href attribute with colons replaced by hyphens.
"""
return match.group(1) + match.group(2).replace(':', '-')
def fix_ids(self, tree): def fix_ids(self, tree):
"""Replace colons with hyphens in href and id attributes. """Replace colons with hyphens in href and id attributes.
Some readers crash because they interpret the part as a Some readers crash because they interpret the part as a
@ -230,7 +235,7 @@ class EpubBuilder(StandaloneHTMLBuilder):
if 'refuri' in node: if 'refuri' in node:
m = _refuri_re.match(node['refuri']) m = _refuri_re.match(node['refuri'])
if m: if m:
node['refuri'] = m.group(1) + m.group(2).replace(':', '-') node['refuri'] = self.fix_fragment(m)
if 'refid' in node: if 'refid' in node:
node['refid'] = node['refid'].replace(':', '-') node['refid'] = node['refid'].replace(':', '-')
for node in tree.traverse(addnodes.desc_signature): for node in tree.traverse(addnodes.desc_signature):
@ -273,13 +278,12 @@ class EpubBuilder(StandaloneHTMLBuilder):
for (i, link) in enumerate(links): for (i, link) in enumerate(links):
m = _refuri_re.match(link) m = _refuri_re.match(link)
if m: if m:
links[i] = m.group(1) + m.group(2).replace(':', '-') links[i] = self.fix_fragment(m)
for subentryname, subentrylinks in subitems: for subentryname, subentrylinks in subitems:
for (i, link) in enumerate(subentrylinks): for (i, link) in enumerate(subentrylinks):
m = _refuri_re.match(link) m = _refuri_re.match(link)
if m: if m:
subentrylinks[i] = \ subentrylinks[i] = self.fix_fragment(m)
m.group(1) + m.group(2).replace(':', '-')
def handle_page(self, pagename, addctx, templatename='page.html', def handle_page(self, pagename, addctx, templatename='page.html',
outfilename=None, event_arg=None): outfilename=None, event_arg=None):