From 798d40c3f3e0700501de1588274b69e2b128ad7c Mon Sep 17 00:00:00 2001 From: Pierce Lopez Date: Fri, 7 Aug 2020 01:54:45 -0400 Subject: [PATCH] doc: convert refcounting directive to a class Directive functions are no longer supported in Sphinx-3.0 but directive classes have been supported since early 1.x --- doc/ext/refcounting.py | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/doc/ext/refcounting.py b/doc/ext/refcounting.py index bba2684..e72c481 100644 --- a/doc/ext/refcounting.py +++ b/doc/ext/refcounting.py @@ -24,8 +24,8 @@ """ from docutils import nodes +from docutils.parsers.rst import Directive -class refcounting(nodes.emphasis): pass def visit(self, node): self.visit_emphasis(node) @@ -40,16 +40,25 @@ def html_depart(self, node): self.body.append('') -def refcounting_directive(name, arguments, options, content, lineno, - content_offset, block_text, state, state_machine): - if arguments[0] == 'borrow': - text = 'Return value: Borrowed reference.' - elif arguments[0] == 'new': - text = 'Return value: New reference.' - else: - raise Error('Valid arguments: new, borrow') +class refcounting(nodes.emphasis): + pass + +class refcounting_directive(Directive): + has_content = False + required_arguments = 1 + optional_arguments = 0 + final_argument_whitespace = False + + def run(self): + if self.arguments[0] == 'borrow': + text = 'Return value: Borrowed reference.' + elif self.arguments[0] == 'new': + text = 'Return value: New reference.' + else: + raise Error('Valid arguments: new, borrow') + + return [refcounting(text, text)] - return [refcounting(text, text)] def setup(app): app.add_node(refcounting, @@ -57,4 +66,4 @@ def setup(app): latex=(visit, depart), text=(visit, depart), man=(visit, depart)) - app.add_directive('refcounting', refcounting_directive, 0, (1, 0, 0)) + app.add_directive('refcounting', refcounting_directive)