@@ -135,8 +135,25 @@ def update_env(self, md: Markdown, config: dict) -> None: # noqa: D102 (ignore
135135 self .env .filters ["crossref" ] = self .do_crossref
136136 self .env .filters ["multi_crossref" ] = self .do_multi_crossref
137137 self .env .filters ["order_members" ] = self .do_order_members
138+ self .env .filters ["format_code" ] = self .do_format_code
138139 self .env .filters ["format_signature" ] = self .do_format_signature
139140
141+ def do_format_code (self , code : str , line_length : int ) -> str :
142+ """Format code using Black.
143+
144+ Parameters:
145+ code: The code to format.
146+ line_length: The line length to give to Black.
147+
148+ Returns:
149+ The same code, formatted.
150+ """
151+ code = code .strip ()
152+ if len (code ) < line_length :
153+ return code
154+ formatter = _get_black_formatter ()
155+ return formatter (code , line_length )
156+
140157 def do_format_signature (self , signature : str , line_length : int ) -> str :
141158 """Format a signature using Black.
142159
@@ -151,7 +168,9 @@ def do_format_signature(self, signature: str, line_length: int) -> str:
151168 if len (code ) < line_length :
152169 return code
153170 formatter = _get_black_formatter ()
154- return formatter (code , line_length )
171+ formatted = formatter (f"def { code } : pass" , line_length )
172+ # remove starting `def ` and trailing `: pass`
173+ return formatted [4 :- 5 ].strip ()[:- 1 ]
155174
156175 def do_order_members (self , members : Sequence [Object | Alias ], order : Order ) -> Sequence [Object | Alias ]:
157176 """Order members given an ordering method.
@@ -219,8 +238,6 @@ def _get_black_formatter():
219238
220239 def formatter (code , line_length ): # noqa: WPS430
221240 mode = Mode (line_length = line_length )
222- formatted = format_str (f"def { code } : pass" , mode = mode )
223- # remove starting `def ` and trailing `: pass`
224- return formatted [4 :- 5 ].strip ()[:- 1 ]
241+ return format_str (code , mode = mode )
225242
226243 return formatter
0 commit comments