diff options
Diffstat (limited to 'docs/_ext/djangodocs.py')
-rw-r--r-- | docs/_ext/djangodocs.py | 43 |
1 files changed, 41 insertions, 2 deletions
diff --git a/docs/_ext/djangodocs.py b/docs/_ext/djangodocs.py index aaad219b54..efcd94d4bc 100644 --- a/docs/_ext/djangodocs.py +++ b/docs/_ext/djangodocs.py @@ -4,12 +4,28 @@ Sphinx plugins for Django documentation. import docutils.nodes import docutils.transforms +try: + import json +except ImportError: + try: + import simplejson as json + except ImportError: + try: + from django.utils import simplejson as json + except ImportError: + json = None +import os import sphinx import sphinx.addnodes try: from sphinx import builders except ImportError: import sphinx.builder as builders +try: + import sphinx.builders.html as builders_html +except ImportError: + builders_html = builders +from sphinx.util.console import bold import sphinx.directives import sphinx.environment try: @@ -56,7 +72,8 @@ def setup(app): app.add_directive('versionadded', parse_version_directive, 1, (1, 1, 1)) app.add_directive('versionchanged', parse_version_directive, 1, (1, 1, 1)) app.add_transform(SuppressBlockquotes) - + app.add_builder(DjangoStandaloneHTMLBuilder) + # Monkeypatch PickleHTMLBuilder so that it doesn't die in Sphinx 0.4.2 if sphinx.__version__ == '0.4.2': monkeypatch_pickle_builder() @@ -218,7 +235,6 @@ def monkeypatch_pickle_builder(): import cPickle as pickle except ImportError: import pickle - from sphinx.util.console import bold def handle_finish(self): # dump the global context @@ -248,3 +264,26 @@ def monkeypatch_pickle_builder(): builders.PickleHTMLBuilder.handle_finish = handle_finish + +class DjangoStandaloneHTMLBuilder(builders_html.StandaloneHTMLBuilder): + """ + Subclass to add some extra things we need. + """ + + name = 'djangohtml' + + def finish(self): + super(DjangoStandaloneHTMLBuilder, self).finish() + if json is None: + self.warn("cannot create templatebuiltins.js due to missing simplejson dependency") + return + self.info(bold("writing templatebuiltins.js...")) + xrefs = self.env.reftargets.keys() + templatebuiltins = dict([('ttags', [n for (t,n) in xrefs if t == 'ttag']), + ('tfilters', [n for (t,n) in xrefs if t == 'tfilter'])]) + outfilename = os.path.join(self.outdir, "templatebuiltins.js") + f = open(outfilename, 'wb') + f.write('var django_template_builtins = ') + json.dump(templatebuiltins, f) + f.write(';\n') + f.close(); |