diff options
author | Daniel Neuhäuser <ich@danielneuhaeuser.de> | 2010-08-15 13:56:01 +0200 |
---|---|---|
committer | Daniel Neuhäuser <ich@danielneuhaeuser.de> | 2010-08-15 13:56:01 +0200 |
commit | e182a7d5ed337f29998e36aeb96c6e32ef8c189a (patch) | |
tree | b07129788f9ef498d4a55cb54324c5bf1f157aa7 /sphinx/builders/websupport.py | |
parent | 948304bf7d217ecd5fcf8a63339f5b1cf9e84308 (diff) | |
download | sphinx-git-e182a7d5ed337f29998e36aeb96c6e32ef8c189a.tar.gz |
Switch to VersioningBuilderMixin
Diffstat (limited to 'sphinx/builders/websupport.py')
-rw-r--r-- | sphinx/builders/websupport.py | 59 |
1 files changed, 5 insertions, 54 deletions
diff --git a/sphinx/builders/websupport.py b/sphinx/builders/websupport.py index 283cff4fc..303adfe64 100644 --- a/sphinx/builders/websupport.py +++ b/sphinx/builders/websupport.py @@ -12,23 +12,20 @@ import cPickle as pickle from os import path from cgi import escape -import os import posixpath import shutil from docutils.io import StringOutput -from docutils.utils import Reporter from sphinx.util.osutil import os_path, relative_uri, ensuredir, copyfile from sphinx.util.jsonimpl import dumps as dump_json from sphinx.util.websupport import is_commentable from sphinx.builders.html import StandaloneHTMLBuilder +from sphinx.builders.versioning import VersioningBuilderMixin from sphinx.writers.websupport import WebSupportTranslator -from sphinx.environment import WarningStream -from sphinx.versioning import add_uids, merge_doctrees -class WebSupportBuilder(StandaloneHTMLBuilder): +class WebSupportBuilder(StandaloneHTMLBuilder, VersioningBuilderMixin): """ Builds documents for the web support package. """ @@ -37,57 +34,16 @@ class WebSupportBuilder(StandaloneHTMLBuilder): def init(self): StandaloneHTMLBuilder.init(self) - for root, dirs, files in os.walk(self.doctreedir): - for fn in files: - fp = path.join(root, fn) - if fp.endswith('.doctree'): - copyfile(fp, fp + '.old') + VersioningBuilderMixin.init(self) def init_translator_class(self): self.translator_class = WebSupportTranslator - def get_old_doctree(self, docname): - fp = self.env.doc2path(docname, self.doctreedir, '.doctree.old') - try: - f = open(fp, 'rb') - try: - doctree = pickle.load(f) - finally: - f.close() - except IOError: - return None - doctree.settings.env = self.env - doctree.reporter = Reporter(self.env.doc2path(docname), 2, 5, - stream=WarningStream(self.env._warnfunc)) - return doctree - - def resave_doctree(self, docname, doctree): - # make it picklable, save the reporter, it's needed later. - reporter = doctree.reporter - doctree.reporter = None - doctree.settings.warning_stream = None - doctree.settings.env = None - doctree.settings.record_dependencies = None - - fp = self.env.doc2path(docname, self.doctreedir, '.doctree') - f = open(fp, 'wb') - try: - pickle.dump(doctree, f, pickle.HIGHEST_PROTOCOL) - finally: - f.close() - - doctree.reporter = reporter - def write_doc(self, docname, doctree): destination = StringOutput(encoding='utf-8') doctree.settings = self.docsettings - old_doctree = self.get_old_doctree(docname) - if old_doctree: - list(merge_doctrees(old_doctree, doctree, is_commentable)) - else: - list(add_uids(doctree, is_commentable)) - self.resave_doctree(docname, doctree) + self.handle_versioning(docname, doctree, is_commentable) self.cur_docname = docname self.secnumbers = self.env.toc_secnumbers.get(docname, {}) @@ -171,6 +127,7 @@ class WebSupportBuilder(StandaloneHTMLBuilder): def handle_finish(self): StandaloneHTMLBuilder.handle_finish(self) + VersioningBuilderMixin.finish(self) directories = ['_images', '_static'] for directory in directories: src = path.join(self.outdir, directory) @@ -180,12 +137,6 @@ class WebSupportBuilder(StandaloneHTMLBuilder): shutil.rmtree(dst) shutil.move(src, dst) - for root, dirs, files in os.walk(self.doctreedir): - for fn in files: - fp = path.join(root, fn) - if fp.endswith('.doctree.old'): - os.remove(fp) - def dump_search_index(self): self.indexer.finish_indexing() |