mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Fix #9710: html: Wrong styles for even/odd rows in nested tables
This commit is contained in:
parent
3aabcd2f80
commit
dd2ff3e911
6
CHANGES
6
CHANGES
@ -28,6 +28,11 @@ Incompatible changes
|
|||||||
Deprecated
|
Deprecated
|
||||||
----------
|
----------
|
||||||
|
|
||||||
|
* ``sphinx.writers.html.HTMLTranslator._fieldlist_row_index``
|
||||||
|
* ``sphinx.writers.html.HTMLTranslator._table_row_index``
|
||||||
|
* ``sphinx.writers.html5.HTML5Translator._fieldlist_row_index``
|
||||||
|
* ``sphinx.writers.html5.HTML5Translator._table_row_index``
|
||||||
|
|
||||||
Features added
|
Features added
|
||||||
--------------
|
--------------
|
||||||
|
|
||||||
@ -58,6 +63,7 @@ Bugs fixed
|
|||||||
* #9630: autosummary: Failed to build summary table if :confval:`primary_domain`
|
* #9630: autosummary: Failed to build summary table if :confval:`primary_domain`
|
||||||
is not 'py'
|
is not 'py'
|
||||||
* #9670: html: Fix download file with special characters
|
* #9670: html: Fix download file with special characters
|
||||||
|
* #9710: html: Wrong styles for even/odd rows in nested tables
|
||||||
* #9649: HTML search: when objects have the same name but in different domains,
|
* #9649: HTML search: when objects have the same name but in different domains,
|
||||||
return all of them as result instead of just one.
|
return all of them as result instead of just one.
|
||||||
* #9678: linkcheck: file extension was shown twice in warnings
|
* #9678: linkcheck: file extension was shown twice in warnings
|
||||||
|
@ -22,6 +22,26 @@ The following is a list of deprecated interfaces.
|
|||||||
- (will be) Removed
|
- (will be) Removed
|
||||||
- Alternatives
|
- Alternatives
|
||||||
|
|
||||||
|
* - ``sphinx.writers.html.HTMLTranslator._fieldlist_row_index``
|
||||||
|
- 4.3
|
||||||
|
- 6.0
|
||||||
|
- ``sphinx.writers.html.HTMLTranslator._fieldlist_row_indices``
|
||||||
|
|
||||||
|
* - ``sphinx.writers.html.HTMLTranslator._table_row_index``
|
||||||
|
- 4.3
|
||||||
|
- 6.0
|
||||||
|
- ``sphinx.writers.html.HTMLTranslator._table_row_indices``
|
||||||
|
|
||||||
|
* - ``sphinx.writers.html5.HTML5Translator._fieldlist_row_index``
|
||||||
|
- 4.3
|
||||||
|
- 6.0
|
||||||
|
- ``sphinx.writers.html5.HTML5Translator._fieldlist_row_indices``
|
||||||
|
|
||||||
|
* - ``sphinx.writers.html5.HTML5Translator._table_row_index``
|
||||||
|
- 4.3
|
||||||
|
- 6.0
|
||||||
|
- ``sphinx.writers.html5.HTML5Translator._table_row_indices``
|
||||||
|
|
||||||
* - The optional argument ``app`` for ``sphinx.environment.BuildEnvironment``
|
* - The optional argument ``app`` for ``sphinx.environment.BuildEnvironment``
|
||||||
- 4.1
|
- 4.1
|
||||||
- 6.0
|
- 6.0
|
||||||
|
@ -23,7 +23,7 @@ from docutils.writers.html4css1 import Writer
|
|||||||
|
|
||||||
from sphinx import addnodes
|
from sphinx import addnodes
|
||||||
from sphinx.builders import Builder
|
from sphinx.builders import Builder
|
||||||
from sphinx.deprecation import RemovedInSphinx50Warning
|
from sphinx.deprecation import RemovedInSphinx50Warning, RemovedInSphinx60Warning
|
||||||
from sphinx.locale import _, __, admonitionlabels
|
from sphinx.locale import _, __, admonitionlabels
|
||||||
from sphinx.util import logging
|
from sphinx.util import logging
|
||||||
from sphinx.util.docutils import SphinxTranslator
|
from sphinx.util.docutils import SphinxTranslator
|
||||||
@ -96,8 +96,8 @@ class HTMLTranslator(SphinxTranslator, BaseTranslator):
|
|||||||
self.secnumber_suffix = self.config.html_secnumber_suffix
|
self.secnumber_suffix = self.config.html_secnumber_suffix
|
||||||
self.param_separator = ''
|
self.param_separator = ''
|
||||||
self.optional_param_level = 0
|
self.optional_param_level = 0
|
||||||
self._table_row_index = 0
|
self._table_row_indices = [0]
|
||||||
self._fieldlist_row_index = 0
|
self._fieldlist_row_indices = [0]
|
||||||
self.required_params_left = 0
|
self.required_params_left = 0
|
||||||
|
|
||||||
def visit_start_of_file(self, node: Element) -> None:
|
def visit_start_of_file(self, node: Element) -> None:
|
||||||
@ -807,16 +807,20 @@ class HTMLTranslator(SphinxTranslator, BaseTranslator):
|
|||||||
# overwritten to add even/odd classes
|
# overwritten to add even/odd classes
|
||||||
|
|
||||||
def visit_table(self, node: Element) -> None:
|
def visit_table(self, node: Element) -> None:
|
||||||
self._table_row_index = 0
|
self._table_row_indices.append(0)
|
||||||
|
|
||||||
# set align=default if align not specified to give a default style
|
# set align=default if align not specified to give a default style
|
||||||
node.setdefault('align', 'default')
|
node.setdefault('align', 'default')
|
||||||
|
|
||||||
return super().visit_table(node)
|
return super().visit_table(node)
|
||||||
|
|
||||||
|
def depart_table(self, node: Element) -> None:
|
||||||
|
self._table_row_indices.pop()
|
||||||
|
super().depart_table(node)
|
||||||
|
|
||||||
def visit_row(self, node: Element) -> None:
|
def visit_row(self, node: Element) -> None:
|
||||||
self._table_row_index += 1
|
self._table_row_indices[-1] += 1
|
||||||
if self._table_row_index % 2 == 0:
|
if self._table_row_indices[-1] % 2 == 0:
|
||||||
node['classes'].append('row-even')
|
node['classes'].append('row-even')
|
||||||
else:
|
else:
|
||||||
node['classes'].append('row-odd')
|
node['classes'].append('row-odd')
|
||||||
@ -829,12 +833,16 @@ class HTMLTranslator(SphinxTranslator, BaseTranslator):
|
|||||||
self.body[-1] = ' '
|
self.body[-1] = ' '
|
||||||
|
|
||||||
def visit_field_list(self, node: Element) -> None:
|
def visit_field_list(self, node: Element) -> None:
|
||||||
self._fieldlist_row_index = 0
|
self._fieldlist_row_indices.append(0)
|
||||||
return super().visit_field_list(node)
|
return super().visit_field_list(node)
|
||||||
|
|
||||||
|
def depart_field_list(self, node: Element) -> None:
|
||||||
|
self._fieldlist_row_indices.pop()
|
||||||
|
return super().depart_field_list(node)
|
||||||
|
|
||||||
def visit_field(self, node: Element) -> None:
|
def visit_field(self, node: Element) -> None:
|
||||||
self._fieldlist_row_index += 1
|
self._fieldlist_row_indices[-1] += 1
|
||||||
if self._fieldlist_row_index % 2 == 0:
|
if self._fieldlist_row_indices[-1] % 2 == 0:
|
||||||
node['classes'].append('field-even')
|
node['classes'].append('field-even')
|
||||||
else:
|
else:
|
||||||
node['classes'].append('field-odd')
|
node['classes'].append('field-odd')
|
||||||
@ -876,3 +884,15 @@ class HTMLTranslator(SphinxTranslator, BaseTranslator):
|
|||||||
warnings.warn('HTMLTranslator.permalink_text is deprecated.',
|
warnings.warn('HTMLTranslator.permalink_text is deprecated.',
|
||||||
RemovedInSphinx50Warning, stacklevel=2)
|
RemovedInSphinx50Warning, stacklevel=2)
|
||||||
return self.config.html_permalinks_icon
|
return self.config.html_permalinks_icon
|
||||||
|
|
||||||
|
@property
|
||||||
|
def _fieldlist_row_index(self):
|
||||||
|
warnings.warn('_fieldlist_row_index is deprecated',
|
||||||
|
RemovedInSphinx60Warning, stacklevel=2)
|
||||||
|
return self._fieldlist_row_indices[-1]
|
||||||
|
|
||||||
|
@property
|
||||||
|
def _table_row_index(self):
|
||||||
|
warnings.warn('_table_row_index is deprecated',
|
||||||
|
RemovedInSphinx60Warning, stacklevel=2)
|
||||||
|
return self._table_row_indices[-1]
|
||||||
|
@ -67,8 +67,8 @@ class HTML5Translator(SphinxTranslator, BaseTranslator):
|
|||||||
self.secnumber_suffix = self.config.html_secnumber_suffix
|
self.secnumber_suffix = self.config.html_secnumber_suffix
|
||||||
self.param_separator = ''
|
self.param_separator = ''
|
||||||
self.optional_param_level = 0
|
self.optional_param_level = 0
|
||||||
self._table_row_index = 0
|
self._table_row_indices = [0]
|
||||||
self._fieldlist_row_index = 0
|
self._fieldlist_row_indices = [0]
|
||||||
self.required_params_left = 0
|
self.required_params_left = 0
|
||||||
|
|
||||||
def visit_start_of_file(self, node: Element) -> None:
|
def visit_start_of_file(self, node: Element) -> None:
|
||||||
@ -743,7 +743,7 @@ class HTML5Translator(SphinxTranslator, BaseTranslator):
|
|||||||
# overwritten to add even/odd classes
|
# overwritten to add even/odd classes
|
||||||
|
|
||||||
def visit_table(self, node: Element) -> None:
|
def visit_table(self, node: Element) -> None:
|
||||||
self._table_row_index = 0
|
self._table_row_indices.append(0)
|
||||||
|
|
||||||
atts = {}
|
atts = {}
|
||||||
classes = [cls.strip(' \t\n') for cls in self.settings.table_style.split(',')]
|
classes = [cls.strip(' \t\n') for cls in self.settings.table_style.split(',')]
|
||||||
@ -757,9 +757,13 @@ class HTML5Translator(SphinxTranslator, BaseTranslator):
|
|||||||
tag = self.starttag(node, 'table', CLASS=' '.join(classes), **atts)
|
tag = self.starttag(node, 'table', CLASS=' '.join(classes), **atts)
|
||||||
self.body.append(tag)
|
self.body.append(tag)
|
||||||
|
|
||||||
|
def depart_table(self, node: Element) -> None:
|
||||||
|
self._table_row_indices.pop()
|
||||||
|
super().depart_table(node)
|
||||||
|
|
||||||
def visit_row(self, node: Element) -> None:
|
def visit_row(self, node: Element) -> None:
|
||||||
self._table_row_index += 1
|
self._table_row_indices[-1] += 1
|
||||||
if self._table_row_index % 2 == 0:
|
if self._table_row_indices[-1] % 2 == 0:
|
||||||
node['classes'].append('row-even')
|
node['classes'].append('row-even')
|
||||||
else:
|
else:
|
||||||
node['classes'].append('row-odd')
|
node['classes'].append('row-odd')
|
||||||
@ -767,12 +771,16 @@ class HTML5Translator(SphinxTranslator, BaseTranslator):
|
|||||||
node.column = 0 # type: ignore
|
node.column = 0 # type: ignore
|
||||||
|
|
||||||
def visit_field_list(self, node: Element) -> None:
|
def visit_field_list(self, node: Element) -> None:
|
||||||
self._fieldlist_row_index = 0
|
self._fieldlist_row_indices.append(0)
|
||||||
return super().visit_field_list(node)
|
return super().visit_field_list(node)
|
||||||
|
|
||||||
|
def depart_field_list(self, node: Element) -> None:
|
||||||
|
self._fieldlist_row_indices.pop()
|
||||||
|
return super().depart_field_list(node)
|
||||||
|
|
||||||
def visit_field(self, node: Element) -> None:
|
def visit_field(self, node: Element) -> None:
|
||||||
self._fieldlist_row_index += 1
|
self._fieldlist_row_indices[-1] += 1
|
||||||
if self._fieldlist_row_index % 2 == 0:
|
if self._fieldlist_row_indices[-1] % 2 == 0:
|
||||||
node['classes'].append('field-even')
|
node['classes'].append('field-even')
|
||||||
else:
|
else:
|
||||||
node['classes'].append('field-odd')
|
node['classes'].append('field-odd')
|
||||||
@ -822,3 +830,15 @@ class HTML5Translator(SphinxTranslator, BaseTranslator):
|
|||||||
for id in node['ids'][1:]:
|
for id in node['ids'][1:]:
|
||||||
self.body.append('<span id="%s"></span>' % id)
|
self.body.append('<span id="%s"></span>' % id)
|
||||||
node['ids'].remove(id)
|
node['ids'].remove(id)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def _fieldlist_row_index(self):
|
||||||
|
warnings.warn('_fieldlist_row_index is deprecated',
|
||||||
|
RemovedInSphinx60Warning, stacklevel=2)
|
||||||
|
return self._fieldlist_row_indices[-1]
|
||||||
|
|
||||||
|
@property
|
||||||
|
def _table_row_index(self):
|
||||||
|
warnings.warn('_table_row_index is deprecated',
|
||||||
|
RemovedInSphinx60Warning, stacklevel=2)
|
||||||
|
return self._table_row_indices[-1]
|
||||||
|
Loading…
Reference in New Issue
Block a user