From cf7da1843c45a4c2df7a749f7886a2d2ba0ee92a Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Mon, 15 Apr 2024 19:25:40 +0200 Subject: Adding upstream version 7.2.6. Signed-off-by: Daniel Baumann --- sphinx/writers/html.py | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 sphinx/writers/html.py (limited to 'sphinx/writers/html.py') diff --git a/sphinx/writers/html.py b/sphinx/writers/html.py new file mode 100644 index 0000000..99d47c9 --- /dev/null +++ b/sphinx/writers/html.py @@ -0,0 +1,44 @@ +"""docutils writers handling Sphinx' custom nodes.""" + +from __future__ import annotations + +from typing import TYPE_CHECKING, cast + +from docutils.writers.html4css1 import Writer + +from sphinx.util import logging +from sphinx.writers.html5 import HTML5Translator + +if TYPE_CHECKING: + from sphinx.builders.html import StandaloneHTMLBuilder + + +logger = logging.getLogger(__name__) +HTMLTranslator = HTML5Translator + +# A good overview of the purpose behind these classes can be found here: +# http://www.arnebrodowski.de/blog/write-your-own-restructuredtext-writer.html + + +class HTMLWriter(Writer): + + # override embed-stylesheet default value to False. + settings_default_overrides = {"embed_stylesheet": False} + + def __init__(self, builder: StandaloneHTMLBuilder) -> None: + super().__init__() + self.builder = builder + + def translate(self) -> None: + # sadly, this is mostly copied from parent class + visitor = self.builder.create_translator(self.document, self.builder) + self.visitor = cast(HTML5Translator, visitor) + self.document.walkabout(visitor) + self.output = self.visitor.astext() + for attr in ('head_prefix', 'stylesheet', 'head', 'body_prefix', + 'body_pre_docinfo', 'docinfo', 'body', 'fragment', + 'body_suffix', 'meta', 'title', 'subtitle', 'header', + 'footer', 'html_prolog', 'html_head', 'html_title', + 'html_subtitle', 'html_body'): + setattr(self, attr, getattr(visitor, attr, None)) + self.clean_meta = ''.join(self.visitor.meta[2:]) -- cgit v1.2.3