mirror of
https://github.com/django/django.git
synced 2025-07-10 06:45:14 +00:00
Added hyperlinks for builtin template tags and filters to code samples in docs.
Implemented in javascript because doing it 'properly' is pretty much impossible with Sphinx and Pygments. Refs #12249 git-svn-id: http://code.djangoproject.com/svn/django/trunk@13135 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
cfc05d8d68
commit
b09581394e
5 changed files with 88 additions and 7 deletions
|
@ -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();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue