Skip to content

Commit 464c9c6

Browse files
committed
Add support for multiline neg/bitw_not/attr/call/array/dict patterns, closes Scony#46
1 parent e9ba542 commit 464c9c6

File tree

4 files changed

+65
-1
lines changed

4 files changed

+65
-1
lines changed

gdtoolkit/formatter/expression.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,13 @@ def _format_foldable_to_multiple_lines(
209209
"shift_pattern": _format_operator_chain_based_expression_to_multiple_lines,
210210
"arith_pattern": _format_operator_chain_based_expression_to_multiple_lines,
211211
"mdr_pattern": _format_operator_chain_based_expression_to_multiple_lines,
212+
"neg_pattern": _format_concrete_expression_to_single_line,
213+
"bitw_not_pattern": _format_concrete_expression_to_single_line,
214+
"attr_pattern": _format_operator_chain_based_expression_to_multiple_lines,
215+
"call_pattern": _format_call_expression_to_multiple_lines,
216+
"array_pattern": _format_concrete_expression_to_single_line,
217+
"dict_pattern": _format_concrete_expression_to_single_line,
218+
"kv_pair_pattern": _format_kv_pair_to_multiple_lines,
212219
} # type: Dict[str, Callable]
213220
return handlers[expression.data](expression, expression_context, context)
214221

@@ -254,7 +261,7 @@ def _format_args_to_multiple_lines(
254261
def _format_kv_pair_to_multiple_lines(
255262
expression: Tree, expression_context: ExpressionContext, context: Context
256263
) -> FormattedLines:
257-
suffix = ":" if expression.data == "c_dict_element" else " ="
264+
suffix = ":" if expression.data in ["c_dict_element", "kv_pair_pattern"] else " ="
258265
key_expression_context = ExpressionContext(
259266
expression_context.prefix_string,
260267
expression_context.prefix_line,

gdtoolkit/formatter/expression_utils.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ def is_foldable(expression: Node) -> bool:
2424
"signal_arg_typed",
2525
"signal_arg_regular",
2626
"non_foldable_dot_chain",
27+
"var_capture_pattern",
28+
"etc_pattern",
29+
"wildcard_pattern",
2730
]
2831

2932

tests/formatter/input-output-pairs/multiline_match_statements.in.gd

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,19 @@ class X:
2525
pass
2626
1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1:
2727
pass
28+
-------------------------------------------------------------------------------------------1:
29+
pass
30+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1:
31+
pass
32+
x.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa:
33+
pass
34+
Vector3(1,1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1,1):
35+
pass
36+
var xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:
37+
pass
38+
# TODO: format to multiple lines once multiline syntax is fixed in Godot
39+
[_,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]:
40+
pass
41+
# TODO: format to multiple lines once multiline syntax is fixed in Godot
42+
{'aaaaa', 'bbbbbbbbbbbbbbbbbbbbb': 1111, 'ccccccccccccccccccccc': 1111, 'ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd': 1111}:
43+
pass

tests/formatter/input-output-pairs/multiline_match_statements.out.gd

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,3 +214,41 @@ class X:
214214
* 1
215215
):
216216
pass
217+
-------------------------------------------------------------------------------------------1:
218+
pass
219+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1:
220+
pass
221+
(
222+
x
223+
. aaaa
224+
. aaaa
225+
. aaaa
226+
. aaaa
227+
. aaaa
228+
. aaaa
229+
. aaaa
230+
. aaaa
231+
. aaaa
232+
. aaaa
233+
. aaaa
234+
. aaaa
235+
. aaaa
236+
. aaaa
237+
. aaaa
238+
. aaaa
239+
. aaaa
240+
. aaaa
241+
):
242+
pass
243+
Vector3(
244+
1, 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1, 1
245+
):
246+
pass
247+
var xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:
248+
pass
249+
# TODO: format to multiple lines once multiline syntax is fixed in Godot
250+
[_, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]:
251+
pass
252+
# TODO: format to multiple lines once multiline syntax is fixed in Godot
253+
{"aaaaa", "bbbbbbbbbbbbbbbbbbbbb": 1111, "ccccccccccccccccccccc": 1111, "ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd": 1111}:
254+
pass

0 commit comments

Comments
 (0)