Skip to content

Commit 092efcf

Browse files
committed
Add temporary workaround for #192, #193
1 parent c940431 commit 092efcf

File tree

5 files changed

+86
-18
lines changed

5 files changed

+86
-18
lines changed

gdtoolkit/formatter/expression.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -383,8 +383,23 @@ def _format_call_expression_to_multiple_lines(
383383
def _collapse_to_getattr_chain_and_format_to_multiple_lines(
384384
expression: Tree, expression_context: ExpressionContext, context: Context
385385
) -> FormattedLines:
386+
getattr_chain = _collapse_getattr_tree_to_getattr_chain(expression)
387+
# TODO: remove once #193 implemented
388+
getattr_chain_workaround = (
389+
expression.data == "getattr_call"
390+
and not is_expression_forcing_multiple_lines(
391+
expression.children[0], context.standalone_comments
392+
)
393+
and isinstance(getattr_chain.children[0], Token)
394+
and len(getattr_chain.children) == 3
395+
and getattr_chain.children[2].data == "actual_getattr_call"
396+
)
397+
if getattr_chain_workaround:
398+
return _format_call_expression_to_multiple_lines(
399+
expression, expression_context, context
400+
)
386401
return _format_foldable_to_multiple_lines(
387-
_collapse_getattr_tree_to_getattr_chain(expression), expression_context, context
402+
getattr_chain, expression_context, context
388403
)
389404

390405

tests/formatter/input-output-pairs/array-n-dict-expression-comments.out.gd

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,16 @@ class X:
1010
} # r
1111
var sut
1212
var Config
13-
(
14-
sut
15-
. init(
16-
self,
17-
{
18-
0: "x",
19-
1: "y",
20-
2: "z",
21-
},
22-
{
23-
Config.Household.LevelingDirection.POSITIVE: 0.1, # 10%/s
24-
Config.Household.LevelingDirection.NEGATIVE: 0.1,
25-
}
26-
)
13+
sut.init(
14+
self,
15+
{
16+
0: "x",
17+
1: "y",
18+
2: "z",
19+
},
20+
{
21+
Config.Household.LevelingDirection.POSITIVE: 0.1, # 10%/s
22+
Config.Household.LevelingDirection.NEGATIVE: 0.1,
23+
}
2724
)
2825
sut.process(10.0, 0) # 0.0

tests/formatter/input-output-pairs/call-expressions.out.gd

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,6 @@ class X:
8787
1,
8888
1,
8989
)
90-
var e = (
91-
a
92-
. f(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)
90+
var e = a.f(
91+
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
9392
)
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
var Logger = {}
2+
var registry = {}
3+
func _hash(_x):
4+
pass
5+
func register(_x):
6+
pass
7+
func _load_sprite_from_definition(def: Dictionary) -> void:
8+
for group in def["Sprite"]:
9+
var sprite = def["Sprite"][group]
10+
for field in sprite:
11+
match field:
12+
"Hframes":
13+
sprite["Hframes"] = int(sprite["Hframes"])
14+
"Vframes":
15+
sprite["Vframes"] = int(sprite["Vframes"])
16+
_:
17+
var defkey = _hash(sprite[field])
18+
if not defkey in registry["Asset"]:
19+
Logger.trace(0xf00003, "%s: Loading asset '%s'." % [def["DefKey"], sprite[field]])
20+
register({"Schema": "Asset", "DefKey": defkey, "Path": sprite[field]})
21+
sprite[field] = defkey
22+
else:
23+
Logger.trace(0xf00004, "%s: Asset already loaded '%s'." % [def["DefKey"], sprite[field]])
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
var Logger = {}
2+
var registry = {}
3+
4+
5+
func _hash(_x):
6+
pass
7+
8+
9+
func register(_x):
10+
pass
11+
12+
13+
func _load_sprite_from_definition(def: Dictionary) -> void:
14+
for group in def["Sprite"]:
15+
var sprite = def["Sprite"][group]
16+
for field in sprite:
17+
match field:
18+
"Hframes":
19+
sprite["Hframes"] = int(sprite["Hframes"])
20+
"Vframes":
21+
sprite["Vframes"] = int(sprite["Vframes"])
22+
_:
23+
var defkey = _hash(sprite[field])
24+
if not defkey in registry["Asset"]:
25+
Logger.trace(
26+
0xf00003, "%s: Loading asset '%s'." % [def["DefKey"], sprite[field]]
27+
)
28+
register({"Schema": "Asset", "DefKey": defkey, "Path": sprite[field]})
29+
sprite[field] = defkey
30+
else:
31+
Logger.trace(
32+
0xf00004,
33+
"%s: Asset already loaded '%s'." % [def["DefKey"], sprite[field]]
34+
)

0 commit comments

Comments
 (0)