Skip to content

Commit 0fc3fa8

Browse files
committed
Simplify desc_parameterlist into single class
1 parent 7f3a177 commit 0fc3fa8

File tree

5 files changed

+10
-25
lines changed

5 files changed

+10
-25
lines changed

sphinx/addnodes.py

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -243,14 +243,9 @@ class desc_parameterlist(nodes.Part, nodes.Inline, nodes.FixedTextElement):
243243
"""Node for a general parameter list."""
244244
child_text_separator = ', '
245245

246-
def astext(self):
247-
return f'({super().astext()})'
248-
249-
250-
class desc_multiline_parameterlist(nodes.Part, nodes.Inline, nodes.FixedTextElement):
251-
"""Node for a multiline parameter list.
252-
"""
253-
child_text_separator = ', '
246+
def __init__(self, *args: Any, multiline: bool = False, **kwargs: Any) -> None:
247+
super().__init__(*args, **kwargs)
248+
self.multiline = multiline
254249

255250
def astext(self):
256251
return f'({super().astext()})'

sphinx/domains/c.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -716,7 +716,7 @@ def describe_signature(self, signode: TextElement, mode: str,
716716
multiline = self.multiline
717717
# only use the desc_parameterlist for the outer list, not for inner lists
718718
if mode == 'lastIsName':
719-
paramlist = addnodes.desc_multiline_parameterlist() if multiline else addnodes.desc_parameterlist()
719+
paramlist = addnodes.desc_parameterlist(multiline=multiline)
720720
for arg in self.args:
721721
param_node = addnodes.desc_content() if multiline else paramlist
722722
param = addnodes.desc_parameter('', '', noemph=True)

sphinx/domains/cpp.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2133,7 +2133,7 @@ def describe_signature(self, signode: TextElement, mode: str,
21332133
multiline = self.multiline
21342134
# only use the desc_parameterlist for the outer list, not for inner lists
21352135
if mode == 'lastIsName':
2136-
paramlist = addnodes.desc_multiline_parameterlist() if multiline else addnodes.desc_parameterlist()
2136+
paramlist = addnodes.desc_parameterlist(multiline=multiline)
21372137
for arg in self.args:
21382138
param_node = addnodes.desc_content() if multiline else paramlist
21392139
param = addnodes.desc_parameter('', '', noemph=True)

sphinx/domains/python.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ def _parse_arglist(
228228
arglist: str, env: Optional[BuildEnvironment] = None, multiline=False
229229
) -> addnodes.desc_parameterlist:
230230
"""Parse a list of arguments using AST parser"""
231-
params = addnodes.desc_multiline_parameterlist(arglist) if multiline else addnodes.desc_parameterlist(arglist)
231+
params = addnodes.desc_parameterlist(multiline=multiline)
232232
sig = signature_from_str('(%s)' % arglist)
233233
last_kind = None
234234
for param in sig.parameters.values():

sphinx/writers/html5.py

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -155,22 +155,12 @@ def visit_desc_parameterlist(self, node: Element) -> None:
155155
self.required_params_left = sum([isinstance(c, addnodes.desc_parameter)
156156
for c in node.children])
157157
self.param_separator = node.child_text_separator
158+
if node.multiline:
159+
self.body.append(self.starttag(node, 'dl'))
158160

159161
def depart_desc_parameterlist(self, node: Element) -> None:
160-
self.body.append('<span class="sig-paren">)</span>')
161-
162-
def visit_desc_multiline_parameterlist(self, node: Element) -> None:
163-
self.body.append('<span class="sig-paren">(</span>')
164-
self.first_param = 1
165-
self.optional_param_level = 0
166-
# How many required parameters are left.
167-
self.required_params_left = sum([isinstance(c, addnodes.desc_parameter)
168-
for c in node.children])
169-
self.param_separator = node.child_text_separator
170-
self.body.append(self.starttag(node, 'dl'))
171-
172-
def depart_desc_multiline_parameterlist(self, node: Element) -> None:
173-
self.body.append('</dl>\n\n')
162+
if node.multiline:
163+
self.body.append('</dl>\n\n')
174164
self.body.append('<span class="sig-paren">)</span>')
175165

176166
# If required parameters are still to come, then put the comma after

0 commit comments

Comments
 (0)