本文整理匯總了Python中sphinx.addnodes.pending_xref方法的典型用法代碼示例。如果您正苦於以下問題:Python addnodes.pending_xref方法的具體用法?Python addnodes.pending_xref怎麽用?Python addnodes.pending_xref使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類sphinx.addnodes
的用法示例。
在下文中一共展示了addnodes.pending_xref方法的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: resolve_required_by_xrefs
# 需要導入模塊: from sphinx import addnodes [as 別名]
# 或者: from sphinx.addnodes import pending_xref [as 別名]
def resolve_required_by_xrefs(app, env, node, contnode):
"""Now that all recipes and packages have been parsed, we are called here
for each ``pending_xref`` node that sphinx has not been able to resolve.
We handle specifically the ``requiredby`` reftype created by the
`RequiredByField` fieldtype allowed in ``conda:package::``
directives, where we replace the ``pending_ref`` node with a bullet
list of reference nodes pointing to the package pages that
"depended" on the package.
"""
if node['reftype'] == 'requiredby' and node['refdomain'] == 'conda':
target = node['reftarget']
docname = node['refdoc']
backrefs = env.domains['conda'].data['backrefs'].get(target, set())
listnode = nodes.bullet_list()
for back_docname, back_target in backrefs:
par = nodes.paragraph()
name_node = addnodes.literal_strong(back_target, back_target,
classes=['xref', 'backref'])
refnode = make_refnode(app.builder, docname,
back_docname, back_target, name_node)
refnode.set_class('conda-package')
par += refnode
listnode += nodes.list_item('', par)
return listnode
示例2: resolve_xref
# 需要導入模塊: from sphinx import addnodes [as 別名]
# 或者: from sphinx.addnodes import pending_xref [as 別名]
def resolve_xref(self, env: BuildEnvironment, fromdocname: str,
builder, role, target, node, contnode):
"""Resolve the ``pending_xref`` **node** with the given **role** and **target**."""
for objtype in self.objtypes_for_role(role) or []:
if (objtype, target) in self.data['objects']:
node = make_refnode(
builder, fromdocname,
self.data['objects'][objtype, target][0],
self.data['objects'][objtype, target][1],
contnode, target + ' ' + objtype)
node.set_class('conda-package')
return node
if objtype == "package":
for channel, urlformat in env.app.config.bioconda_other_channels.items():
if RepoData().get_package_data(channels=channel, name=target):
uri = urlformat.format(target)
node = nodes.reference('', '', internal=False,
refuri=uri, classes=[channel])
node += contnode
return node
return None # triggers missing-reference
示例3: make_xref
# 需要導入模塊: from sphinx import addnodes [as 別名]
# 或者: from sphinx.addnodes import pending_xref [as 別名]
def make_xref(self, rolename, domain, target,
innernode=d_nodes.emphasis, contnode=None, env=None):
if not rolename:
return contnode or innernode(target, target)
title = target
if domain == 'eql' and rolename == 'type':
target = EQLTypeXRef.filter_target(target)
if target in EQLTypedField.ignored_types:
return d_nodes.Text(title)
refnode = s_nodes.pending_xref('', refdomain=domain,
refexplicit=title != target,
reftype=rolename, reftarget=target)
refnode += contnode or innernode(title, title)
if env:
env.domains[domain].process_field_xref(refnode)
refnode['eql-auto-link'] = True
return refnode
示例4: mps_ref_role
# 需要導入模塊: from sphinx import addnodes [as 別名]
# 或者: from sphinx.addnodes import pending_xref [as 別名]
def mps_ref_role(name, rawtext, text, lineno, inliner, options={}, content=[]):
textnode = nodes.Text(text)
if text.startswith('.'):
# Tag is relative to current prefix and so points elsewhere
# in this document, so create reference node.
try:
targetid = inliner.document.mps_tag_prefix + text
refnode = nodes.reference('', '', refid=targetid, *[textnode])
except AttributeError:
return [textnode], [inliner.document.reporter.warning
(':mps:ref without mps:prefix', line=lineno)]
else:
# Tag is absolute: need to create pending_xref node.
refnode = addnodes.pending_xref('', refdomain='std', reftarget=text,
reftype='view')
refnode += textnode
return [refnode], []
示例5: add_class_def
# 需要導入模塊: from sphinx import addnodes [as 別名]
# 或者: from sphinx.addnodes import pending_xref [as 別名]
def add_class_def(node, classDef):
"""Add reference on classDef to node """
ref = addnodes.pending_xref(
reftarget=classDef,
reftype="class",
refdomain="py", # py:class="None" py:module="altair" refdoc="user_guide/marks"
refexplicit=False,
# refdoc="",
refwarn=False,
)
ref["py:class"] = "None"
ref["py:module"] = "altair"
ref += nodes.literal(text=classDef, classes=["xref", "py", "py-class"])
node += ref
return node
示例6: resolve_xref
# 需要導入模塊: from sphinx import addnodes [as 別名]
# 或者: from sphinx.addnodes import pending_xref [as 別名]
def resolve_xref(self, env, fromdocname, builder, typ, target,
node, contnode):
try:
info = self.data[str(typ)][target]
except KeyError:
text = contnode.rawsource
role = self.roles.get(typ)
if role is None:
return nodes.emphasis(text, text)
resnode = role.result_nodes(env.get_doctree(fromdocname),
env, node, None)[0][0]
if isinstance(resnode, addnodes.pending_xref):
text = node[0][0]
reporter = env.get_doctree(fromdocname).reporter
reporter.error('Cannot resolve reference to %r' % text,
line=node.line)
return nodes.problematic(text, text)
return resnode
else:
anchor = http_resource_anchor(typ, target)
title = typ.upper() + ' ' + target
return make_refnode(builder, fromdocname, info[0], anchor,
contnode, title)
示例7: label_ref_node
# 需要導入模塊: from sphinx import addnodes [as 別名]
# 或者: from sphinx.addnodes import pending_xref [as 別名]
def label_ref_node(docname, ref_to, title):
"""Generate a node that references a label"""
txt = Text(title, rawsource=title)
newchild = inline(
':ref:`%s`' % ref_to,
'',
txt,
classes=['xref', 'std', 'std-ref']
)
newnode = pending_xref(
':ref:`%s`' % ref_to,
newchild,
reftype='ref',
refwarn='True',
reftarget=ref_to,
refexplicit='False',
refdomain='std',
refdoc=docname
)
return newnode
示例8: meth_ref_node
# 需要導入模塊: from sphinx import addnodes [as 別名]
# 或者: from sphinx.addnodes import pending_xref [as 別名]
def meth_ref_node(docname, ref_to, title=None):
"""Generate a node that references a :py:meth:"""
if title is None:
title = ref_to
txt = Text(title, rawsource=title)
newchild = literal(
':py:meth:`%s`' % ref_to,
'',
txt,
classes=['xref', 'py', 'py-meth']
)
newnode = pending_xref(
':py:meth:`%s`' % ref_to,
newchild,
reftype='meth',
refwarn='True',
reftarget=ref_to,
refexplicit='False',
refdomain='py',
refdoc=docname
)
return newnode
示例9: append_type
# 需要導入模塊: from sphinx import addnodes [as 別名]
# 或者: from sphinx.addnodes import pending_xref [as 別名]
def append_type(self, node, typ):
typ, generic_types, is_array = parse_type_signature(typ)
tnode = addnodes.pending_xref(
'', refdomain='csharp', reftype='type',
reftarget=typ, modname=None, classname=None)
if not self.has_parent():
tnode['csharp:parent'] = None
else:
tnode['csharp:parent'] = self.get_parent()
tnode += nodes.Text(shorten_type(typ))
node += tnode
if generic_types:
node += nodes.Text('<')
for i, typ_param in enumerate(generic_types):
self.append_type(node, typ_param)
if i != len(generic_types)-1:
node += nodes.Text(', ')
node += nodes.Text('>')
if is_array:
node += nodes.Text('[]')
示例10: transform_content
# 需要導入模塊: from sphinx import addnodes [as 別名]
# 或者: from sphinx.addnodes import pending_xref [as 別名]
def transform_content(self, contentnode):
config = self.env.ref_context['cfg:config']
if 'nolist' not in self.options:
contentnode.insert(0, cfgconfig(config, self.env.ref_context['cfg:context']))
else:
par = nodes.paragraph('')
par += nodes.Text("See ")
par += addnodes.pending_xref(config,
nodes.Text(config),
refdomain='cfg',
reftype='config',
reftarget=config)
par += nodes.Text(" for a list of further options.")
contentnode.insert(0, par)
super().transform_content(contentnode)
示例11: handle_signature
# 需要導入模塊: from sphinx import addnodes [as 別名]
# 或者: from sphinx.addnodes import pending_xref [as 別名]
def handle_signature(self, sig, signode):
name = sig
config = self.options.get('config', self.env.ref_context.get('cfg:config', ""))
if not config:
logger.warning("config option with unknown config", location=signode)
config = "UNKNOWN"
fullname = config + '.' + name
signode += addnodes.desc_annotation('option ', 'option ')
if not self.env.ref_context.get('cfg:in-config', False):
signode += addnodes.pending_xref(sig,
addnodes.desc_addname(config, config),
refdomain='cfg',
reftype='config',
reftarget=config)
signode += addnodes.desc_addname('', '.')
signode += addnodes.desc_name(sig, '', nodes.Text(sig))
typ = self.options.get('type')
if typ:
type_node = addnodes.desc_annotation(': ', ': ')
info = self.content.parent.info(1) # might be off by a few lines...
type_node.extend(_parse_inline(self.state, typ, info))
signode += type_node
defaultvalue = self.options.get('default')
if defaultvalue:
val_node = addnodes.desc_annotation(' = ', ' = ')
val_node += nodes.literal(defaultvalue, defaultvalue)
signode += val_node
return fullname, config
示例12: make_field
# 需要導入模塊: from sphinx import addnodes [as 別名]
# 或者: from sphinx.addnodes import pending_xref [as 別名]
def make_field(self, types, domain, item, env=None):
fieldname = nodes.field_name('', self.label)
backref = addnodes.pending_xref(
'',
refdomain="conda",
reftype='requiredby', refexplicit=False,
reftarget=env.ref_context['conda:package'],
refdoc=env.docname
)
backref += nodes.inline('', '')
fieldbody = nodes.field_body('', backref)
return nodes.field('', fieldname, fieldbody)
示例13: create_node
# 需要導入模塊: from sphinx import addnodes [as 別名]
# 或者: from sphinx.addnodes import pending_xref [as 別名]
def create_node(env, relative_path, show_button):
"""
Creates documentation node for example include.
:param env: environment of the documentation
:param relative_path: path of the code
:param show_button: whether to show "view code" button
:return paragraph with the node
"""
pagename = "_modules/" + relative_path[:-3]
header_classes = ["example-header"]
if show_button:
header_classes += ["example-header--with-button"]
paragraph = nodes.paragraph(relative_path, classes=header_classes)
paragraph += nodes.inline("", relative_path, classes=["example-title"])
if show_button:
pending_ref = addnodes.pending_xref(
"",
reftype="viewcode",
refdomain="std",
refexplicit=False,
reftarget=pagename,
refid="",
refdoc=env.docname,
classes=["example-header-button viewcode-button"],
)
pending_ref += nodes.inline("", _("View Source"))
paragraph += pending_ref
return paragraph
# noinspection PyProtectedMember
# pylint: disable=protected-access
示例14: run
# 需要導入模塊: from sphinx import addnodes [as 別名]
# 或者: from sphinx.addnodes import pending_xref [as 別名]
def run(self):
ad = super(PluralDirective, self).run()
refs = sum(1 for node in ad[0][0]
if isinstance(node, (addnodes.pending_xref,
nodes.Referential)))
if refs > 1:
ad[0].plural = True
return ad
示例15: replace_pending_xref_refdoc
# 需要導入模塊: from sphinx import addnodes [as 別名]
# 或者: from sphinx.addnodes import pending_xref [as 別名]
def replace_pending_xref_refdoc(node, new_refdoc):
"""
Overwrites the refdoc attribute of all pending_xref nodes.
This is needed, if a doctree with references gets copied used somewhereelse in the documentation.
What is the normal case when using needextract.
:param node: doctree
:param new_refdoc: string, should be an existing docname
:return: None
"""
from sphinx.addnodes import pending_xref
if isinstance(node, pending_xref):
node.attributes['refdoc'] = new_refdoc
else:
for child in node.children:
replace_pending_xref_refdoc(child, new_refdoc)