summaryrefslogtreecommitdiff
path: root/sphinx/builders
diff options
context:
space:
mode:
authorRoland Meister <roland_meister@arcor.de>2013-06-19 21:04:31 +0200
committerRoland Meister <roland_meister@arcor.de>2013-06-19 21:04:31 +0200
commit4103ddb016532e9bc492ac75978593165378d375 (patch)
tree6249e52b937f5710b2d7235db25e52bb45e08d9e /sphinx/builders
parent98d6e9a246035d71aa06da176f13c28bb6b649a6 (diff)
parent34b74095fb6a04c04d9a598f85a96eadc994931c (diff)
downloadsphinx-4103ddb016532e9bc492ac75978593165378d375.tar.gz
Merged birkenfeld/sphinx into default
Diffstat (limited to 'sphinx/builders')
-rw-r--r--sphinx/builders/__init__.py3
-rw-r--r--sphinx/builders/epub.py17
2 files changed, 15 insertions, 5 deletions
diff --git a/sphinx/builders/__init__.py b/sphinx/builders/__init__.py
index 3ff5a161..41824361 100644
--- a/sphinx/builders/__init__.py
+++ b/sphinx/builders/__init__.py
@@ -58,6 +58,9 @@ class Builder(object):
self.config = app.config
self.tags = app.tags
self.tags.add(self.format)
+ self.tags.add(self.name)
+ self.tags.add("format_%s" % self.format)
+ self.tags.add("builder_%s" % self.name)
# images that need to be copied over (source -> dest)
self.images = {}
diff --git a/sphinx/builders/epub.py b/sphinx/builders/epub.py
index 2ddaf5c9..035cec6c 100644
--- a/sphinx/builders/epub.py
+++ b/sphinx/builders/epub.py
@@ -140,7 +140,7 @@ _css_link_target_class = u'link-target'
# XXX These strings should be localized according to epub_language
_guide_titles = {
'toc': u'Table of Contents',
- 'cover': u'Cover Page'
+ 'cover': u'Cover'
}
_media_types = {
@@ -188,14 +188,20 @@ class EpubBuilder(StandaloneHTMLBuilder):
# the output files for epub must be .html only
self.out_suffix = '.html'
self.playorder = 0
+ self.tocid = 0
def get_theme_config(self):
return self.config.epub_theme, self.config.epub_theme_options
# generic support functions
- def make_id(self, name):
- """Replace all characters not allowed for (X)HTML ids."""
- return name.replace('/', '_').replace(' ', '')
+ def make_id(self, name, id_cache={}):
+ # id_cache is intentionally mutable
+ """Return a unique id for name."""
+ id = id_cache.get(name)
+ if not id:
+ id = 'epub-%d' % self.env.new_serialno('epub')
+ id_cache[name] = id
+ return id
def esc(self, name):
"""Replace all characters not allowed in text an attribute values."""
@@ -629,8 +635,9 @@ class EpubBuilder(StandaloneHTMLBuilder):
# XXX Modifies the node
if incr:
self.playorder += 1
+ self.tocid += 1
node['indent'] = _navpoint_indent * level
- node['navpoint'] = self.esc(_navPoint_template % self.playorder)
+ node['navpoint'] = self.esc(_navPoint_template % self.tocid)
node['playorder'] = self.playorder
return _navpoint_template % node