sphinx copybutton doxyrest code blocks (#8992)
This commit is contained in:
@@ -90,9 +90,19 @@ def visit_highlighted_text_node(self, node):
|
||||
self.body.append(text_node)
|
||||
else:
|
||||
self.body.append(match.group(1))
|
||||
|
||||
raise nodes.SkipNode
|
||||
|
||||
|
||||
|
||||
def visit_doxyrest_literalblock_node(self, node):
|
||||
classes = ' '.join(node.attributes['classes'])
|
||||
self.body.append('<div class="{}"><div class="highlight"><pre>'.format(classes))
|
||||
|
||||
|
||||
def depart_doxyrest_literalblock_node(self, node):
|
||||
self.body.append('</pre></div></div>')
|
||||
|
||||
|
||||
def create_ref_node(raw_text, text, target):
|
||||
if not target:
|
||||
return nodes.Text(text, text)
|
||||
@@ -109,6 +119,7 @@ def create_ref_node(raw_text, text, target):
|
||||
node += nodes.Text(text, text)
|
||||
return node
|
||||
|
||||
|
||||
def create_target_node(raw_text, text, target, highlight_language, lineno, document, extra_classes=[]):
|
||||
node = nodes.target(raw_text, '')
|
||||
node['names'] += [target]
|
||||
@@ -130,6 +141,11 @@ def create_target_node(raw_text, text, target, highlight_language, lineno, docum
|
||||
# Sphinx directives
|
||||
#
|
||||
|
||||
|
||||
class DoxyrestLiteralBlock(nodes.literal_block):
|
||||
pass
|
||||
|
||||
|
||||
class RefCodeBlock(Directive):
|
||||
has_content = True
|
||||
required_arguments = 0
|
||||
@@ -161,7 +177,7 @@ class RefCodeBlock(Directive):
|
||||
config = self.state.document.settings.env.config
|
||||
code = u'\n'.join(self.content)
|
||||
pos = 0
|
||||
node = nodes.literal_block('.', '') # single char to prevent sphinx from trying to highlight it
|
||||
node = DoxyrestLiteralBlock('.', '') # single char to prevent sphinx from trying to highlight it
|
||||
node['classes'] += ['highlight'] # we are stripping pyments-generated <div>
|
||||
node['classes'] += self.options.get('class', [])
|
||||
|
||||
@@ -442,6 +458,7 @@ def on_config_inited(app, config):
|
||||
# Doxyrest extenstion setup
|
||||
#
|
||||
|
||||
|
||||
def setup(app):
|
||||
app.add_domain(DoxyrestDomain)
|
||||
|
||||
@@ -451,6 +468,12 @@ def setup(app):
|
||||
latex=(visit_highlighted_text_node, None)
|
||||
)
|
||||
|
||||
app.add_node(
|
||||
DoxyrestLiteralBlock,
|
||||
html=(visit_doxyrest_literalblock_node, depart_doxyrest_literalblock_node),
|
||||
latex=(visit_doxyrest_literalblock_node, depart_doxyrest_literalblock_node)
|
||||
)
|
||||
|
||||
app.add_role('cref', cref_role)
|
||||
app.add_role('target', target_role)
|
||||
app.add_config_value('doxyrest_cref_file', default=None, rebuild=True)
|
||||
|
||||
Reference in New Issue
Block a user