diff --git a/sphinx_js/directives.py b/sphinx_js/directives.py index 6915687..8762fef 100644 --- a/sphinx_js/directives.py +++ b/sphinx_js/directives.py @@ -33,6 +33,7 @@ from sphinx.locale import _ from sphinx.util.docfields import GroupedField, TypedField from sphinx.writers.html5 import HTML5Translator +from sphinx.writers.text import TextTranslator from .renderers import ( AutoAttributeRenderer, @@ -272,22 +273,42 @@ def astext(self) -> str: return f"<{nodes.FixedTextElement.astext(self)}>" -def visit_desc_js_type_parameter_list( +def html5_visit_desc_js_type_parameter_list( self: HTML5Translator, node: nodes.Element ) -> None: """Define the html/text rendering for desc_js_type_parameter_list. Based on sphinx.writers.html5.visit_desc_type_parameter_list """ - self._visit_sig_parameter_list(node, addnodes.desc_parameter, "<", ">") + self.body.append('<') + self.first_param = 1 + self.optional_param_level = 0 + # How many required parameters are left. + self.required_params_left = sum( + [isinstance(c, addnodes.desc_parameter) for c in node.children] + ) + self.param_separator = node.child_text_separator -def depart_desc_js_type_parameter_list( +def html5_depart_desc_js_type_parameter_list( self: HTML5Translator, node: nodes.Element ) -> None: """Define the html/text rendering for desc_js_type_parameter_list. Based on sphinx.writers.html5.depart_desc_type_parameter_list """ - self._depart_sig_parameter_list(node) + self.body.append('>') + + +def text_visit_desc_js_type_parameter_list( + self: TextTranslator, node: nodes.Element +) -> None: + self.add_text("<") + self.first_param = 1 # type:ignore[attr-defined] + + +def text_depart_desc_js_type_parameter_list( + self: TextTranslator, node: nodes.Element +) -> None: + self.add_text(">") def add_param_list_to_signode(signode: desc_signature, params: str) -> None: @@ -457,6 +478,12 @@ def add_directives(app: Sphinx) -> None: app.add_role_to_domain("js", "typealias", JSXRefRole()) app.add_node( desc_js_type_parameter_list, - html=(visit_desc_js_type_parameter_list, depart_desc_js_type_parameter_list), - text=(visit_desc_js_type_parameter_list, depart_desc_js_type_parameter_list), + html=( + html5_visit_desc_js_type_parameter_list, + html5_depart_desc_js_type_parameter_list, + ), + text=( + text_visit_desc_js_type_parameter_list, + text_depart_desc_js_type_parameter_list, + ), )