summaryrefslogtreecommitdiff
path: root/sphinx/writers/html5.py
diff options
context:
space:
mode:
Diffstat (limited to 'sphinx/writers/html5.py')
-rw-r--r--sphinx/writers/html5.py52
1 files changed, 17 insertions, 35 deletions
diff --git a/sphinx/writers/html5.py b/sphinx/writers/html5.py
index 9f38bf4f3..f94dd60a3 100644
--- a/sphinx/writers/html5.py
+++ b/sphinx/writers/html5.py
@@ -10,7 +10,7 @@
import os
import posixpath
-import sys
+import re
import warnings
from typing import Any, Iterable, Tuple
from typing import cast
@@ -21,7 +21,7 @@ from docutils.writers.html5_polyglot import HTMLTranslator as BaseTranslator
from sphinx import addnodes
from sphinx.builders import Builder
-from sphinx.deprecation import RemovedInSphinx30Warning, RemovedInSphinx40Warning
+from sphinx.deprecation import RemovedInSphinx40Warning
from sphinx.locale import admonitionlabels, _, __
from sphinx.util import logging
from sphinx.util.docutils import SphinxTranslator
@@ -38,6 +38,19 @@ logger = logging.getLogger(__name__)
# http://www.arnebrodowski.de/blog/write-your-own-restructuredtext-writer.html
+def multiply_length(length: str, scale: int) -> str:
+ """Multiply *length* (width or height) by *scale*."""
+ matched = re.match(r'^(\d*\.?\d*)\s*(\S*)$', length)
+ if not matched:
+ return length
+ elif scale == 100:
+ return length
+ else:
+ amount, unit = matched.groups()
+ result = float(amount) * scale / 100
+ return "%s%s" % (int(result), unit)
+
+
class HTML5Translator(SphinxTranslator, BaseTranslator):
"""
Our custom HTML translator.
@@ -88,10 +101,6 @@ class HTML5Translator(SphinxTranslator, BaseTranslator):
def visit_desc_signature(self, node: Element) -> None:
# the id is set automatically
self.body.append(self.starttag(node, 'dt'))
- # anchor for per-desc interactive data
- if node.parent['objtype'] != 'describe' \
- and node['ids'] and node['first']:
- self.body.append('<!--[%s]-->' % node['ids'][0])
def depart_desc_signature(self, node: Element) -> None:
if not node.get('is_multiline'):
@@ -543,11 +552,10 @@ class HTML5Translator(SphinxTranslator, BaseTranslator):
if 'height' in node:
atts['height'] = node['height']
if 'scale' in node:
- scale = node['scale'] / 100.0
if 'width' in atts:
- atts['width'] = int(atts['width']) * scale
+ atts['width'] = multiply_length(atts['width'], node['scale'])
if 'height' in atts:
- atts['height'] = int(atts['height']) * scale
+ atts['height'] = multiply_length(atts['height'], node['scale'])
atts['alt'] = node.get('alt', uri)
if 'align' in node:
atts['class'] = 'align-%s' % node['align']
@@ -777,29 +785,3 @@ class HTML5Translator(SphinxTranslator, BaseTranslator):
def unknown_visit(self, node: Node) -> None:
raise NotImplementedError('Unknown node: ' + node.__class__.__name__)
-
- # --------- METHODS FOR COMPATIBILITY --------------------------------------
-
- @property
- def highlightlang(self) -> str:
- warnings.warn('HTMLTranslator.highlightlang is deprecated.',
- RemovedInSphinx30Warning, stacklevel=2)
- return self.builder.config.highlight_language
-
- @property
- def highlightlang_base(self) -> str:
- warnings.warn('HTMLTranslator.highlightlang_base is deprecated.',
- RemovedInSphinx30Warning, stacklevel=2)
- return self.builder.config.highlight_language
-
- @property
- def highlightopts(self) -> str:
- warnings.warn('HTMLTranslator.highlightopts is deprecated.',
- RemovedInSphinx30Warning, stacklevel=2)
- return self.builder.config.highlight_options
-
- @property
- def highlightlinenothreshold(self) -> int:
- warnings.warn('HTMLTranslator.highlightlinenothreshold is deprecated.',
- RemovedInSphinx30Warning, stacklevel=2)
- return sys.maxsize