Skip to content

Commit

Permalink
Fix sphinx-doc#8446: html: consective spaces are displayed as single …
Browse files Browse the repository at this point in the history
…space

In HTML, consective spaces are considered as single space by HTML
browsers.  To represent them as is, we have to escape them on rendering
them into HTML.  This starts to escape the whole of desc_signature node.
  • Loading branch information
tk0miya committed Nov 22, 2020
1 parent 24a329e commit a9721c2
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 4 deletions.
1 change: 1 addition & 0 deletions CHANGES
Expand Up @@ -51,6 +51,7 @@ Bugs fixed
based uninitalized variables
* #8452: autodoc: autodoc_type_aliases doesn't work when autodoc_typehints is
set to "description"
* #8446: html: consective spaces are displayed as single space
* #8419: html search: Do not load ``language_data.js`` in non-search pages
* #8454: graphviz: The layout option for graph and digraph directives don't work
* #8437: Makefile: ``make clean`` with empty BUILDDIR is dangerous
Expand Down
6 changes: 4 additions & 2 deletions sphinx/writers/html.py
Expand Up @@ -129,8 +129,10 @@ def depart_desc(self, node: Element) -> None:
def visit_desc_signature(self, node: Element) -> None:
# the id is set automatically
self.body.append(self.starttag(node, 'dt'))
self.optional_param_level += 1

def depart_desc_signature(self, node: Element) -> None:
self.optional_param_level -= 1
if not node.get('is_multiline'):
self.add_permalink_ref(node, _('Permalink to this definition'))
self.body.append('</dt>\n')
Expand Down Expand Up @@ -195,19 +197,19 @@ def visit_desc_parameter(self, node: Element) -> None:
self.required_params_left -= 1
if not node.hasattr('noemph'):
self.body.append('<em>')
self.protect_literal_text += 1

def depart_desc_parameter(self, node: Element) -> None:
self.protect_literal_text -= 1
if not node.hasattr('noemph'):
self.body.append('</em>')
if self.required_params_left:
self.body.append(self.param_separator)

def visit_desc_optional(self, node: Element) -> None:
self.optional_param_level += 1
self.body.append('<span class="optional">[</span>')

def depart_desc_optional(self, node: Element) -> None:
self.optional_param_level -= 1
self.body.append('<span class="optional">]</span>')

def visit_desc_annotation(self, node: Element) -> None:
Expand Down
6 changes: 4 additions & 2 deletions sphinx/writers/html5.py
Expand Up @@ -100,8 +100,10 @@ def depart_desc(self, node: Element) -> None:
def visit_desc_signature(self, node: Element) -> None:
# the id is set automatically
self.body.append(self.starttag(node, 'dt'))
self.protect_literal_text += 1

def depart_desc_signature(self, node: Element) -> None:
self.protect_literal_text -= 1
if not node.get('is_multiline'):
self.add_permalink_ref(node, _('Permalink to this definition'))
self.body.append('</dt>\n')
Expand Down Expand Up @@ -174,17 +176,17 @@ def depart_desc_parameter(self, node: Element) -> None:
self.body.append(self.param_separator)

def visit_desc_optional(self, node: Element) -> None:
self.optional_param_level += 1
self.body.append('<span class="optional">[</span>')

def depart_desc_optional(self, node: Element) -> None:
self.optional_param_level -= 1
self.body.append('<span class="optional">]</span>')

def visit_desc_annotation(self, node: Element) -> None:
self.body.append(self.starttag(node, 'em', '', CLASS='property'))
self.protect_literal_text += 1

def depart_desc_annotation(self, node: Element) -> None:
self.protect_literal_text -= 1
self.body.append('</em>')

def visit_desc_content(self, node: Element) -> None:
Expand Down

0 comments on commit a9721c2

Please sign in to comment.