コード例 #1
0
 def role_or_generic(role_name, language_module, lineno, reporter):
     base_role, message = role(role_name, language_module, lineno, reporter)
     if base_role is None:
         roles.register_generic_role(role_name, DummyNodeClass)
         base_role, message = role(role_name, language_module, lineno,
                                   reporter)
     return base_role, message
コード例 #2
0
def setup(app):
    """Install the plugin.

    :param app: Sphinx application context.
    """
    app.add_node(checkbox, html=(visit_input_html, depart_input_html))
    register_generic_role('checkbox', checkbox)
コード例 #3
0
ファイル: sphinx_role.py プロジェクト: VirtualPlants/openalea
def setup(app):
    """Install the plugin.

    :param app: Sphinx application context.
    """
    app.add_node(checkbox, html=(visit_input_html, depart_input_html))
    register_generic_role('checkbox', checkbox)
コード例 #4
0
def restructuredtext(value):
    try:
        from docutils.core import publish_parts
        from docutils import nodes
        from docutils.parsers.rst import roles
    except ImportError:
        if settings.DEBUG:
            raise template.TemplateSyntaxError("Error in {% restructuredtext %} filter: The Python docutils library isn't installed.")
        return force_unicode(value)
    else:
        roles.register_generic_role('file', nodes.literal)
        roles.register_generic_role('func', nodes.literal)
        docutils_settings = getattr(settings, "RESTRUCTUREDTEXT_FILTER_SETTINGS", {})
        parts = publish_parts(source=smart_str(value), writer_name="html4css1", settings_overrides=docutils_settings)
        return mark_safe(force_unicode(parts["fragment"]))
コード例 #5
0
def restructuredtext(value):
    try:
        from docutils.core import publish_parts
        from docutils import nodes
        from docutils.parsers.rst import roles
    except ImportError:
        if settings.DEBUG:
            raise template.TemplateSyntaxError("Error in {% restructuredtext %} filter: The Python docutils library isn't installed.")
        return force_unicode(value)
    else:
        roles.register_generic_role('file', nodes.literal)
        roles.register_generic_role('func', nodes.literal)        
        docutils_settings = getattr(settings, "RESTRUCTUREDTEXT_FILTER_SETTINGS", {})
        parts = publish_parts(source=smart_str(value), writer_name="html4css1", settings_overrides=docutils_settings)
        return mark_safe(force_unicode(parts["fragment"]))
コード例 #6
0
ファイル: parser.py プロジェクト: mirekdlugosz/testimony
    def __init__(self, tokens=None, minimum_tokens=None):
        """Initialize the parser with expected tokens and the minimum set."""
        if tokens is None:
            self.tokens = DEFAULT_TOKENS
        else:
            self.tokens = tokens
        if minimum_tokens is None:
            self.minimum_tokens = DEFAULT_MINIMUM_TOKENS
        else:
            self.minimum_tokens = minimum_tokens
        self.minimum_tokens = set(self.minimum_tokens)
        self.tokens = set(self.tokens)
        if not self.minimum_tokens.issubset(self.tokens):
            raise ValueError('tokens should contain minimum_tokens')

        for role in ('data', 'exc', 'func', 'class', 'const', 'attr', 'meth',
                     'mod', 'obj'):
            roles.register_generic_role(role, nodes.raw)
            roles.register_generic_role('py:' + role, nodes.raw)
コード例 #7
0
ファイル: parser.py プロジェクト: SatelliteQE/testimony
    def __init__(self, tokens=None, minimum_tokens=None):
        """Initialize the parser with expected tokens and the minimum set."""
        if tokens is None:
            self.tokens = DEFAULT_TOKENS
        else:
            self.tokens = tokens
        if minimum_tokens is None:
            self.minimum_tokens = DEFAULT_MINIMUM_TOKENS
        else:
            self.minimum_tokens = minimum_tokens
        self.minimum_tokens = set(self.minimum_tokens)
        self.tokens = set(self.tokens)
        if not self.minimum_tokens.issubset(self.tokens):
            raise ValueError('tokens should contain minimum_tokens')

        for role in (
                'data', 'exc', 'func', 'class', 'const', 'attr', 'meth', 'mod',
                'obj'
        ):
            roles.register_generic_role(role, nodes.raw)
            roles.register_generic_role('py:' + role, nodes.raw)
コード例 #8
0
def parse_rst(text: str, names: List[str] = None, extra_roles: List[str] = []) -> OrderedDict:

    snippets = OrderedDict()
    from docutils.core import publish_doctree

    # Sphinx roles
    from docutils.parsers.rst import roles
    from docutils import nodes
    roles.register_generic_role('kbd', nodes.emphasis)
    roles.register_generic_role('ref', nodes.emphasis)

    # Sphinx-tabs extension directives
    from docutils.parsers.rst import directives
    from docutils.parsers.rst.directives.body import Compound
    directives.register_directive('tabs', Compound)
    directives.register_directive('group-tab', Compound)

    # Sphinx jinja extension directives
    from docutils.parsers.rst.directives.body import LineBlock
    jinja = LineBlock
    jinja.option_spec = {'file': str}
    directives.register_directive('jinja', jinja)

    # custom roles e.g. extlinks
    for role in extra_roles:
        roles.register_generic_role(role, nodes.emphasis)

    doctree = publish_doctree(text)

    def is_literal_block(node):
        return (node.tagname == 'literal_block')

    # TODO: getting lang is tricky, as it's just one of the classes at this point. Another one is 'code', but there can also be user-set classes. Perhaps we should just match against a language array, but this is not optimal. Otherwise we have to do full RST parsing...

    literal_blocks = doctree.traverse(condition=is_literal_block)

    for idx, block in enumerate(literal_blocks):
        snippet = Snippet(block.astext())

        name = ''
        name = ' '.join(block['names'])

        if name != '':
            snippet.meta['name'] = name
            snippets[snippet.meta['name']] = snippet
        else:
            if names and idx < len(names):
                name = names[idx]
                snippet.meta['name'] = name
            else:
                name = 'unnamed'+str(idx)
            snippets[name] = snippet

    return snippets
コード例 #9
0
ファイル: nml_roles.py プロジェクト: rhdtownsend/gyre
def setup(app):
    """Install the plugin.

    :param app: Sphinx application context.
    """

    app.add_role('nml_g', nml_group_role)

    roles.register_generic_role('nml_n', nodes.literal)
    roles.register_generic_role('nml_v', nodes.literal)
    roles.register_generic_role('nml_nv', nodes.literal)

    return
コード例 #10
0
ファイル: roles.py プロジェクト: wiless/IMTAphy
generic_docroles = {
    'command': nodes.strong,
    'dfn': nodes.emphasis,
    'guilabel': nodes.strong,
    'kbd': nodes.literal,
    'mailheader': addnodes.literal_emphasis,
    'makevar': nodes.Text,
    'manpage': addnodes.literal_emphasis,
    'mimetype': addnodes.literal_emphasis,
    'newsgroup': addnodes.literal_emphasis,
    'program': nodes.strong,
    'regexp': nodes.literal,
}

for rolename, nodeclass in generic_docroles.iteritems():
    roles.register_generic_role(rolename, nodeclass)


def indexmarkup_role(typ,
                     rawtext,
                     etext,
                     lineno,
                     inliner,
                     options={},
                     content=[]):
    env = inliner.document.settings.env
    if not typ:
        typ = env.config.default_role
    text = utils.unescape(etext)
    targetid = 'index-%s' % env.index_num
    env.index_num += 1
コード例 #11
0
ファイル: roles.py プロジェクト: fedor4ever/linux_build
generic_docroles = {
    'command' : nodes.strong,
    'dfn' : nodes.emphasis,
    'guilabel' : nodes.strong,
    'kbd' : nodes.literal,
    'mailheader' : addnodes.literal_emphasis,
    'makevar' : nodes.Text,
    'manpage' : addnodes.literal_emphasis,
    'mimetype' : addnodes.literal_emphasis,
    'newsgroup' : addnodes.literal_emphasis,
    'program' : nodes.strong,
    'regexp' : nodes.literal,
}

for rolename, nodeclass in generic_docroles.iteritems():
    roles.register_generic_role(rolename, nodeclass)


def indexmarkup_role(typ, rawtext, etext, lineno, inliner, options={}, content=[]):
    env = inliner.document.settings.env
    if not typ:
        typ = env.config.default_role
    else:
        typ = typ.lower()
    text = utils.unescape(etext)
    targetid = 'index-%s' % env.index_num
    env.index_num += 1
    indexnode = addnodes.index()
    targetnode = nodes.target('', '', ids=[targetid])
    inliner.document.note_explicit_target(targetnode)
    if typ == 'envvar':
コード例 #12
0
ファイル: academio-rst2html.py プロジェクト: pauek/Academio
import sys, os, subprocess, codecs, re
import docutils.core
from docutils import nodes
from docutils.parsers.rst.roles import register_generic_role
from docutils.writers import html4css1

### Docutils

# inline directive :concept:`Subject/Topic/Concept`
# - takes an ID and generates the apropriate link.

class concept(nodes.TextElement): pass
class math(nodes.TextElement): pass

register_generic_role('concept', concept)
register_generic_role('math', math)

## Highlighting in docutils (using pygments)

class HTMLTranslator(html4css1.HTMLTranslator):
   def __init__(self, document):
      html4css1.HTMLTranslator.__init__(self, document)

   # hack to be able to select tables in CSS (1)
   def visit_table(self, node):
      self.body.append('<div class="table">')
      html4css1.HTMLTranslator.visit_table(self, node)

   # hack to be able to select tables in CSS (2)
   def depart_table(self, node):
コード例 #13
0
# Set master doc
master_doc = 'index'

# Set logo
html_logo = 'gyre-logo-200.png'

# Set up Extlinks
extlinks = {
    'ads': ('https://ui.adsabs.harvard.edu/abs/%s/abstract', ''),
    'repo': ('https://github.com/rhdtownsend/gyre/blob/release-5.2/%s', '%s')
}

# Set up additional roles
from docutils.parsers.rst import roles, nodes

roles.register_generic_role('nml_o', nodes.literal)
roles.register_generic_role('nml_l', nodes.literal)

# Set substitutions for sphinx_substitution_extensions
substitutions = [('|release|', release)]

# Set site-wide targets
targets = {
    'github-tarball':
    'https:///github.com/rhdtownsend/gyre/archive/{0:s}.tar.gz'.format(
        release),
    'mesa-sdk':
    'http://www.astro.wisc.edu/~townsend/static.php?ref=mesasdk'
}

rst_prolog = '\n'.join(
コード例 #14
0
ファイル: roles.py プロジェクト: HdVsha/course-algo_fefm
class label_success(nodes.Inline, nodes.TextElement):
    pass


class label_info(nodes.Inline, nodes.TextElement):
    pass


class label_warning(nodes.Inline, nodes.TextElement):
    pass


class label_danger(nodes.Inline, nodes.TextElement):
    pass


roles.register_generic_role('h1', h1)
roles.register_generic_role('h2', h2)
roles.register_generic_role('h3', h3)
roles.register_generic_role('h4', h4)
roles.register_generic_role('h5', h5)
roles.register_generic_role('h6', h6)

roles.register_generic_role('label-default', label_default)
roles.register_generic_role('label-muted', label_muted)
roles.register_generic_role('label-primary', label_primary)
roles.register_generic_role('label-success', label_success)
roles.register_generic_role('label-info', label_info)
roles.register_generic_role('label-warning', label_warning)
roles.register_generic_role('label-danger', label_danger)
コード例 #15
0
ファイル: rst_sphinx.py プロジェクト: pv/pydocweb
    return []

module_directive.arguments = (1, 0, False)
module_directive.content = False
module_directive.options = {'synopsis': directives.unchanged}

register_directive('module', module_directive)
register_directive('currentmodule', module_directive)

#------------------------------------------------------------------------------
# Dummy-rendered roles
#------------------------------------------------------------------------------

# XXX: some of these should be reference-generating

register_generic_role('envvar', nodes.literal)
register_generic_role('token', nodes.literal)
register_generic_role('keyword', nodes.strong)
register_generic_role('option', nodes.literal)
register_generic_role('term', nodes.emphasis)
register_generic_role('command', nodes.literal)
register_generic_role('dfn', nodes.emphasis)
register_generic_role('file', nodes.literal)
register_generic_role('guilabel', nodes.emphasis)
register_generic_role('kbd', nodes.literal)
register_generic_role('mailheader', nodes.literal)
register_generic_role('makevar', nodes.literal)
register_generic_role('manpage', nodes.emphasis)
register_generic_role('menuselection', nodes.emphasis)
register_generic_role('mimetype', nodes.emphasis)
register_generic_role('newsgroup', nodes.emphasis)
コード例 #16
0
from ll import url
from ll.xist import xsc, sims
from ll.xist.ns import doc

try:
    from docutils import core, nodes, utils, parsers, frontend
    from docutils.parsers.rst import roles
    from docutils.parsers.rst.languages import en
except ImportError:
    pass
else:

    class mod(nodes.literal):
        pass

    roles.register_generic_role("mod", mod)
    en.roles["mod"] = "mod"

    class class_(nodes.literal):
        pass

    roles.register_generic_role("class", class_)
    en.roles["class"] = "class"

    class func(nodes.literal):
        pass

    roles.register_generic_role("func", func)
    en.roles["func"] = "func"

    class meth(nodes.literal):
コード例 #17
0
    if count > 1:
      parent = '.'.join(parent.split('.')[:1 - count])
    if parent:
      parent += '.'
    spec = parent + spec
  symbol = resolve(spec)
  return symbol() if callable(symbol) else str(symbol)

#------------------------------------------------------------------------------
# TODO: provide a better implementation here...
# todo: or move to using inline-style declaration? (that way it does not
#       polute *everything* in the application):
#         .. role:: class(literal)
#         .. role:: meth(literal)
#         .. role:: func(literal)
roles.register_generic_role('class', nodes.literal)
roles.register_generic_role('meth', nodes.literal)
roles.register_generic_role('func', nodes.literal)
# /TODO
#------------------------------------------------------------------------------

#------------------------------------------------------------------------------
def undecorate(path):
  # this is very dim-witted implementation, but it works...
  # todo: is there a way to get rid of the need for this?...
  #       perhaps by using entry.path instead of entry.dpath...
  for char in '{}<>':
    path = path.replace(char, '')
  return path

#------------------------------------------------------------------------------
コード例 #18
0
ファイル: parser.py プロジェクト: surajbora1/betelgeuse
def _register_roles():
    """Register Python roles that Sphinx supports."""
    for role in ('data', 'exc', 'func', 'class', 'const', 'attr', 'meth',
                 'mod', 'obj'):
        roles.register_generic_role(role, nodes.raw)
        roles.register_generic_role('py:' + role, nodes.raw)
コード例 #19
0
ファイル: roles.py プロジェクト: miriyagi/bootstrap-rst
class label_success(nodes.Inline, nodes.TextElement):
    pass


class label_info(nodes.Inline, nodes.TextElement):
    pass


class label_warning(nodes.Inline, nodes.TextElement):
    pass


class label_danger(nodes.Inline, nodes.TextElement):
    pass


roles.register_generic_role("h1", h1)
roles.register_generic_role("h2", h2)
roles.register_generic_role("h3", h3)
roles.register_generic_role("h4", h4)
roles.register_generic_role("h5", h5)
roles.register_generic_role("h6", h6)

roles.register_generic_role("label-default", label_default)
roles.register_generic_role("label-muted", label_muted)
roles.register_generic_role("label-primary", label_primary)
roles.register_generic_role("label-success", label_success)
roles.register_generic_role("label-info", label_info)
roles.register_generic_role("label-warning", label_warning)
roles.register_generic_role("label-danger", label_danger)