Source

possumpalace_kit / _ext / pp_docutils_helper.py

Full commit
dan mackinlay 61cd530 


































dan mackinlay c74a1ce 
"""
plugins for rendering that depend on docutils but not sphinx, for use in exporting drafts
"""

import docutils.nodes
from docutils.parsers.rst import roles

class ManualCite(docutils.nodes.citation_reference):
    "Just a citation ref, really but subclassed so we can treat it differently"
    pass

def manualcite_role(name, rawtext, text, lineno, inliner, options={}, content=[]):
    """Manual citations. In LaTeX they render to nothing much.
    I might do more sophisticated treatment in ReST when I have time.
    cribbed from
    http://www.doughellmann.com/articles/how-tos/sphinx-custom-roles/index.html

    Returns 2 part tuple containing list of nodes to insert into the
    document and a list of system messages.  Both are allowed to be
    empty.

    :param name: The role name used in the document.
    :param rawtext: The entire markup snippet, with role.
    :param text: The text marked with the role.
    :param lineno: The line number where rawtext appears in the input.
    :param inliner: The inliner instance that called us.
    :param options: Directive options for customization.
    :param content: The directive content for customization.
    """

    app = inliner.document.settings.env.app
    node = ManualCite(rawtext)
    return [node], []

def register_roles():
    roles.register_local_role('cite', manualcite_role)