summaryrefslogtreecommitdiff
path: root/lib/python2.7/site-packages/django/contrib/admindocs/utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/python2.7/site-packages/django/contrib/admindocs/utils.py')
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/utils.py106
1 files changed, 0 insertions, 106 deletions
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/utils.py b/lib/python2.7/site-packages/django/contrib/admindocs/utils.py
deleted file mode 100644
index 9be0093..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/utils.py
+++ /dev/null
@@ -1,106 +0,0 @@
-"Misc. utility functions/classes for admin documentation generator."
-
-import re
-from email.parser import HeaderParser
-from email.errors import HeaderParseError
-
-from django.utils.safestring import mark_safe
-from django.core.urlresolvers import reverse
-from django.utils.encoding import force_bytes
-try:
- import docutils.core
- import docutils.nodes
- import docutils.parsers.rst.roles
-except ImportError:
- docutils_is_available = False
-else:
- docutils_is_available = True
-
-def trim_docstring(docstring):
- """
- Uniformly trims leading/trailing whitespace from docstrings.
-
- Based on http://www.python.org/peps/pep-0257.html#handling-docstring-indentation
- """
- if not docstring or not docstring.strip():
- return ''
- # Convert tabs to spaces and split into lines
- lines = docstring.expandtabs().splitlines()
- indent = min([len(line) - len(line.lstrip()) for line in lines if line.lstrip()])
- trimmed = [lines[0].lstrip()] + [line[indent:].rstrip() for line in lines[1:]]
- return "\n".join(trimmed).strip()
-
-def parse_docstring(docstring):
- """
- Parse out the parts of a docstring. Returns (title, body, metadata).
- """
- docstring = trim_docstring(docstring)
- parts = re.split(r'\n{2,}', docstring)
- title = parts[0]
- if len(parts) == 1:
- body = ''
- metadata = {}
- else:
- parser = HeaderParser()
- try:
- metadata = parser.parsestr(parts[-1])
- except HeaderParseError:
- metadata = {}
- body = "\n\n".join(parts[1:])
- else:
- metadata = dict(metadata.items())
- if metadata:
- body = "\n\n".join(parts[1:-1])
- else:
- body = "\n\n".join(parts[1:])
- return title, body, metadata
-
-def parse_rst(text, default_reference_context, thing_being_parsed=None):
- """
- Convert the string from reST to an XHTML fragment.
- """
- overrides = {
- 'doctitle_xform' : True,
- 'inital_header_level' : 3,
- "default_reference_context" : default_reference_context,
- "link_base" : reverse('django-admindocs-docroot').rstrip('/')
- }
- if thing_being_parsed:
- thing_being_parsed = force_bytes("<%s>" % thing_being_parsed)
- parts = docutils.core.publish_parts(text, source_path=thing_being_parsed,
- destination_path=None, writer_name='html',
- settings_overrides=overrides)
- return mark_safe(parts['fragment'])
-
-#
-# reST roles
-#
-ROLES = {
- 'model' : '%s/models/%s/',
- 'view' : '%s/views/%s/',
- 'template' : '%s/templates/%s/',
- 'filter' : '%s/filters/#%s',
- 'tag' : '%s/tags/#%s',
-}
-
-def create_reference_role(rolename, urlbase):
- def _role(name, rawtext, text, lineno, inliner, options=None, content=None):
- if options is None: options = {}
- if content is None: content = []
- node = docutils.nodes.reference(rawtext, text, refuri=(urlbase % (inliner.document.settings.link_base, text.lower())), **options)
- return [node], []
- docutils.parsers.rst.roles.register_canonical_role(rolename, _role)
-
-def default_reference_role(name, rawtext, text, lineno, inliner, options=None, content=None):
- if options is None: options = {}
- if content is None: content = []
- context = inliner.document.settings.default_reference_context
- node = docutils.nodes.reference(rawtext, text, refuri=(ROLES[context] % (inliner.document.settings.link_base, text.lower())), **options)
- return [node], []
-
-if docutils_is_available:
- docutils.parsers.rst.roles.register_canonical_role('cmsreference', default_reference_role)
- docutils.parsers.rst.roles.DEFAULT_INTERPRETED_ROLE = 'cmsreference'
-
- for name, urlbase in ROLES.items():
- create_reference_role(name, urlbase)