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
|
||||
----------
|
||||
|
||||
* ``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
|
||||
--------------
|
||||
|
||||
@ -58,6 +63,7 @@ Bugs fixed
|
||||
* #9630: autosummary: Failed to build summary table if :confval:`primary_domain`
|
||||
is not 'py'
|
||||
* #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,
|
||||
return all of them as result instead of just one.
|
||||
* #9678: linkcheck: file extension was shown twice in warnings
|
||||
|
@ -22,6 +22,26 @@ The following is a list of deprecated interfaces.
|
||||
- (will be) Removed
|
||||
- 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``
|
||||
- 4.1
|
||||
- 6.0
|
||||
|
@ -23,7 +23,7 @@ from docutils.writers.html4css1 import Writer
|
||||
|
||||
from sphinx import addnodes
|
||||
from sphinx.builders import Builder
|
||||
from sphinx.deprecation import RemovedInSphinx50Warning
|
||||
from sphinx.deprecation import RemovedInSphinx50Warning, RemovedInSphinx60Warning
|
||||
from sphinx.locale import _, __, admonitionlabels
|
||||
from sphinx.util import logging
|
||||
from sphinx.util.docutils import SphinxTranslator
|
||||
@ -96,8 +96,8 @@ class HTMLTranslator(SphinxTranslator, BaseTranslator):
|
||||
self.secnumber_suffix = self.config.html_secnumber_suffix
|
||||
self.param_separator = ''
|
||||
self.optional_param_level = 0
|
||||
self._table_row_index = 0
|
||||
self._fieldlist_row_index = 0
|
||||
self._table_row_indices = [0]
|
||||
self._fieldlist_row_indices = [0]
|
||||
self.required_params_left = 0
|
||||
|
||||
def visit_start_of_file(self, node: Element) -> None:
|
||||
@ -807,16 +807,20 @@ class HTMLTranslator(SphinxTranslator, BaseTranslator):
|
||||
# overwritten to add even/odd classes
|
||||
|
||||
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
|
||||
node.setdefault('align', 'default')
|
||||
|
||||
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:
|
||||
self._table_row_index += 1
|
||||
if self._table_row_index % 2 == 0:
|
||||
self._table_row_indices[-1] += 1
|
||||
if self._table_row_indices[-1] % 2 == 0:
|
||||
node['classes'].append('row-even')
|
||||
else:
|
||||
node['classes'].append('row-odd')
|
||||
@ -829,12 +833,16 @@ class HTMLTranslator(SphinxTranslator, BaseTranslator):
|
||||
self.body[-1] = ' '
|
||||
|
||||
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)
|
||||
|
||||
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:
|
||||
self._fieldlist_row_index += 1
|
||||
if self._fieldlist_row_index % 2 == 0:
|
||||
self._fieldlist_row_indices[-1] += 1
|
||||
if self._fieldlist_row_indices[-1] % 2 == 0:
|
||||
node['classes'].append('field-even')
|
||||
else:
|
||||
node['classes'].append('field-odd')
|
||||
@ -876,3 +884,15 @@ class HTMLTranslator(SphinxTranslator, BaseTranslator):
|
||||
warnings.warn('HTMLTranslator.permalink_text is deprecated.',
|
||||
RemovedInSphinx50Warning, stacklevel=2)
|
||||
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.param_separator = ''
|
||||
self.optional_param_level = 0
|
||||
self._table_row_index = 0
|
||||
self._fieldlist_row_index = 0
|
||||
self._table_row_indices = [0]
|
||||
self._fieldlist_row_indices = [0]
|
||||
self.required_params_left = 0
|
||||
|
||||
def visit_start_of_file(self, node: Element) -> None:
|
||||
@ -743,7 +743,7 @@ class HTML5Translator(SphinxTranslator, BaseTranslator):
|
||||
# overwritten to add even/odd classes
|
||||
|
||||
def visit_table(self, node: Element) -> None:
|
||||
self._table_row_index = 0
|
||||
self._table_row_indices.append(0)
|
||||
|
||||
atts = {}
|
||||
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)
|
||||
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:
|
||||
self._table_row_index += 1
|
||||
if self._table_row_index % 2 == 0:
|
||||
self._table_row_indices[-1] += 1
|
||||
if self._table_row_indices[-1] % 2 == 0:
|
||||
node['classes'].append('row-even')
|
||||
else:
|
||||
node['classes'].append('row-odd')
|
||||
@ -767,12 +771,16 @@ class HTML5Translator(SphinxTranslator, BaseTranslator):
|
||||
node.column = 0 # type: ignore
|
||||
|
||||
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)
|
||||
|
||||
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:
|
||||
self._fieldlist_row_index += 1
|
||||
if self._fieldlist_row_index % 2 == 0:
|
||||
self._fieldlist_row_indices[-1] += 1
|
||||
if self._fieldlist_row_indices[-1] % 2 == 0:
|
||||
node['classes'].append('field-even')
|
||||
else:
|
||||
node['classes'].append('field-odd')
|
||||
@ -822,3 +830,15 @@ class HTML5Translator(SphinxTranslator, BaseTranslator):
|
||||
for id in node['ids'][1:]:
|
||||
self.body.append('<span id="%s"></span>' % 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