我们从Python开源项目中,提取了以下11个代码示例,用于说明如何使用docutils.nodes.GenericNodeVisitor()。
def dispatch_visit(self, node): """Override to catch basic attributes which many nodes have.""" self.handle_basic_atts(node) nodes.GenericNodeVisitor.dispatch_visit(self, node)
def __init__(self, document, builder): nodes.GenericNodeVisitor.__init__(self, document) self.builder = builder
def cleanup(self, doctrees=False): AutoDirective._registry.clear() ModuleAnalyzer.cache.clear() LaTeXBuilder.usepackages = [] sys.path[:] = self._saved_path sys.modules.pop('autodoc_fodder', None) directives._directives = self._saved_directives roles._roles = self._saved_roles for method in dir(nodes.GenericNodeVisitor): if method.startswith('visit_') and \ method not in self._saved_nodeclasses: delattr(nodes.GenericNodeVisitor, 'visit_' + method[6:]) delattr(nodes.GenericNodeVisitor, 'depart_' + method[6:])
def process_refonly_bullet_lists(self, docname, doctree): """Change refonly bullet lists to use compact_paragraphs. Specifically implemented for 'Indices and Tables' section, which looks odd when html_compact_lists is false. """ if self.config.html_compact_lists: return class RefOnlyListChecker(nodes.GenericNodeVisitor): """Raise `nodes.NodeFound` if non-simple list item is encountered. Here 'simple' means a list item containing only a paragraph with a single reference in it. """ def default_visit(self, node): raise nodes.NodeFound def visit_bullet_list(self, node): pass def visit_list_item(self, node): children = [] for child in node.children: if not isinstance(child, nodes.Invisible): children.append(child) if len(children) != 1: raise nodes.NodeFound if not isinstance(children[0], nodes.paragraph): raise nodes.NodeFound para = children[0] if len(para) != 1: raise nodes.NodeFound if not isinstance(para[0], addnodes.pending_xref): raise nodes.NodeFound raise nodes.SkipChildren def invisible_visit(self, node): """Invisible nodes should be ignored.""" pass def check_refonly_list(node): """Check for list with only references in it.""" visitor = RefOnlyListChecker(doctree) try: node.walk(visitor) except nodes.NodeFound: return False else: return True for node in doctree.traverse(nodes.bullet_list): if check_refonly_list(node): for item in node.traverse(nodes.list_item): para = item[0] ref = para[0] compact_para = addnodes.compact_paragraph() compact_para += ref item.replace(para, compact_para)
def __init__(self, buildername='html', testroot=None, srcdir=None, freshenv=False, confoverrides=None, status=None, warning=None, tags=None, docutilsconf=None): if testroot is None: defaultsrcdir = 'root' testroot = rootdir / 'root' else: defaultsrcdir = 'test-' + testroot testroot = rootdir / 'roots' / ('test-' + testroot) if srcdir is None: srcdir = tempdir / defaultsrcdir else: srcdir = tempdir / srcdir if not srcdir.exists(): testroot.copytree(srcdir) if docutilsconf is not None: (srcdir / 'docutils.conf').write_text(docutilsconf) builddir = srcdir / '_build' # if confdir is None: confdir = srcdir # if outdir is None: outdir = builddir.joinpath(buildername) if not outdir.isdir(): outdir.makedirs() # if doctreedir is None: doctreedir = builddir.joinpath('doctrees') if not doctreedir.isdir(): doctreedir.makedirs() if confoverrides is None: confoverrides = {} # if warningiserror is None: warningiserror = False self._saved_path = sys.path[:] self._saved_directives = directives._directives.copy() self._saved_roles = roles._roles.copy() self._saved_nodeclasses = set(v for v in dir(nodes.GenericNodeVisitor) if v.startswith('visit_')) try: application.Sphinx.__init__(self, srcdir, confdir, outdir, doctreedir, buildername, confoverrides, status, warning, freshenv, warningiserror, tags) except: self.cleanup() raise