Skip to content

Commit

Permalink
fix unknown directive options removing the directive entirely
Browse files Browse the repository at this point in the history
  • Loading branch information
terencehonles committed Apr 2, 2021
1 parent bd03c94 commit 7a19485
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 1 deletion.
31 changes: 30 additions & 1 deletion lib/github/commands/rest2html
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ except:
import codecs
import io

from docutils import nodes
from docutils import nodes, utils
from docutils.parsers.rst import directives, roles
from docutils.parsers.rst.directives.body import CodeBlock, Directive
from docutils.core import publish_parts
Expand Down Expand Up @@ -76,6 +76,35 @@ from docutils import nodes
original_behavior = False # Documents original docutils behavior
github_display = True

def extract_extension_options(field_list, option_spec):
"""
Overrides `utils.extract_extension_options` and inlines
`utils.assemble_option_dict` to make it ignore unknown options passed to
directives (i.e. ``:caption:`` for ``.. code-block:``).
"""

dropped = set()
options = {}
for name, value in utils.extract_options(field_list):
convertor = option_spec.get(name)
if name in options or name in dropped:
raise utils.DuplicateOptionError('duplicate option "%s"' % name)

# silently drop unknown options as long as they are not duplicates
if convertor is None:
dropped.add(name)
continue

# continue as before
try:
options[name] = convertor(value)
except (ValueError, TypeError) as detail:
raise detail.__class__('(option: "%s"; value: %r)\n%s'
% (name, value, ' '.join(detail.args)))
return options

utils.extract_extension_options = extract_extension_options

def unknown_directive(self, type_name):
lineno = self.state_machine.abs_line_number()
indented, indent, offset, blank_finish = \
Expand Down
6 changes: 6 additions & 0 deletions test/markups/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,12 @@ The UTF-8 quote character in this table used to cause python to go boom. Now doc
python.code('hooray')
.. code:: python
:caption: An ignored Sphinx option
:made-up-option: An ignored made up option
python.code('hello world')
.. doctest:: ignored

>>> some_function()
Expand Down
3 changes: 3 additions & 0 deletions test/markups/README.rst.html
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,9 @@ <h2><a href="#id1">Header 2</a></h2>
python.code('hooray')
</pre>
<pre lang="python">
python.code('hello world')
</pre>
<pre lang="python">
&gt;&gt;&gt; some_function()
'result'
</pre>
Expand Down

1 comment on commit 7a19485

@t3000
Copy link

@t3000 t3000 commented on 7a19485 Apr 21, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

work¤images(01)

Please sign in to comment.