Skip to content

Commit 37d550f

Browse files
committed
Add and pass deindentation tests 1, 2 and 3! :party:
1 parent 0b491a8 commit 37d550f

File tree

3 files changed

+110
-9
lines changed

3 files changed

+110
-9
lines changed

.gitignore

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,7 @@ Legacy Mod Converter.spec
66
settings.json
77

88
.vscode/*
9-
!.vscode/launch.json
9+
!.vscode/launch.json
10+
11+
expected.json
12+
result.json

Python/ini_converting/ini_parser.py

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,13 @@ def get_parsed_tokens(tokens, parsed=None, token_idx=None, depth=0):
2626
children = { "type": "children", "content": [] }
2727
parsed[-1].append(children)
2828
get_parsed_tokens(tokens, children["content"], token_idx, depth + 1)
29+
# state = "start" # TODO: Should state be set to start on this comment's line?
30+
elif state == "newline" and is_same_depth(token, depth):
31+
parsed.append([])
32+
state = "start"
2933
elif state == "newline" and depth > 0 and is_shallower(depth, token, tokens, token_idx[0] + 1):
3034
return
31-
elif state == "newline" and (len(parsed) == 0 or token["type"] == "WORD" or token["type"] == "TABS"):
35+
elif state == "newline" and (len(parsed) == 0 or token["type"] == "WORD"):
3236
parsed.append([])
3337
state = "start"
3438

@@ -56,10 +60,16 @@ def get_parsed_tokens(tokens, parsed=None, token_idx=None, depth=0):
5660
return parsed
5761

5862

63+
def get_depth(token):
64+
return len(token["content"])
65+
66+
67+
def is_same_depth(token, depth):
68+
return token["type"] == "TABS" and get_depth(token) == depth
69+
70+
5971
def is_shallower(depth, token, tokens, next_token_idx):
60-
if token["type"] == "TABS" and get_depth(token) >= depth:
61-
return False
62-
elif token["type"] == "NEWLINES":
72+
if token["type"] == "NEWLINES":
6373
return False
6474

6575
while next_token_idx < len(tokens):
@@ -75,10 +85,6 @@ def is_shallower(depth, token, tokens, next_token_idx):
7585
return False # Reached when the while-loop read the last character of the file and didn't return.
7686

7787

78-
def get_depth(token):
79-
return len(token["content"])
80-
81-
8288
def is_deeper(depth, token):
8389
new_depth = get_depth(token)
8490

Python/ini_converting/ini_parser_tests.py

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,98 @@ def parser_tests():
7171
]}
7272
]
7373
])
74+
test("deindentation_1", [
75+
[
76+
{ "type": "property", "content": "PresetName" }, { "type": "extra", "content": " " }, { "type": "extra", "content": "=" }, { "type": "extra", "content": " " }, { "type": "value", "content": "Foo" }, { "type": "extra", "content": "\n" },
77+
{ "type": "children", "content": [
78+
[
79+
{ "type": "extra", "content": "\t" }, { "type": "property", "content": "A1" }, { "type": "extra", "content": " " }, { "type": "extra", "content": "=" }, { "type": "extra", "content": " " }, { "type": "value", "content": "X" }, { "type": "extra", "content": "\n\n" },
80+
],
81+
[
82+
{ "type": "extra", "content": "\t" }, { "type": "property", "content": "A2" }, { "type": "extra", "content": " " }, { "type": "extra", "content": "=" }, { "type": "extra", "content": " " }, { "type": "value", "content": "X" }, { "type": "extra", "content": "\n" },
83+
],
84+
[
85+
{ "type": "extra", "content": "\t" }, { "type": "property", "content": "B1" }, { "type": "extra", "content": " " }, { "type": "extra", "content": "=" }, { "type": "extra", "content": " " }, { "type": "value", "content": "X" }, { "type": "extra", "content": "\n" },
86+
{ "type": "extra", "content": " " }, { "type": "extra", "content": "\n" },
87+
],
88+
[
89+
{ "type": "extra", "content": "\t" }, { "type": "property", "content": "B2" }, { "type": "extra", "content": " " }, { "type": "extra", "content": "=" }, { "type": "extra", "content": " " }, { "type": "value", "content": "X" }, { "type": "extra", "content": "\n" },
90+
],
91+
[
92+
{ "type": "extra", "content": "\t" }, { "type": "property", "content": "C1" }, { "type": "extra", "content": " " }, { "type": "extra", "content": "=" }, { "type": "extra", "content": " " }, { "type": "value", "content": "X" }, { "type": "extra", "content": "\n" },
93+
{ "type": "extra", "content": "//foo" }, { "type": "extra", "content": "\n" },
94+
],
95+
[
96+
{ "type": "extra", "content": "\t" }, { "type": "property", "content": "C2" }, { "type": "extra", "content": " " }, { "type": "extra", "content": "=" }, { "type": "extra", "content": " " }, { "type": "value", "content": "X" },
97+
]
98+
]}
99+
]
100+
])
101+
test("deindentation_2", [
102+
[
103+
{ "type": "property", "content": "AddEffect" }, { "type": "extra", "content": " " }, { "type": "extra", "content": "=" }, { "type": "extra", "content": " " }, { "type": "value", "content": "MOPixel" }, { "type": "extra", "content": "\n" },
104+
{ "type": "children", "content": [
105+
[
106+
{ "type": "extra", "content": "\t" }, { "type": "property", "content": "PresetName" }, { "type": "extra", "content": " " }, { "type": "extra", "content": "=" }, { "type": "extra", "content": " " }, { "type": "value", "content": "Foo" }, { "type": "extra", "content": "\n" },
107+
{ "type": "children", "content": [
108+
[
109+
{ "type": "extra", "content": "\t\t" }, { "type": "property", "content": "A1" }, { "type": "extra", "content": " " }, { "type": "extra", "content": "=" }, { "type": "extra", "content": " " }, { "type": "value", "content": "X" }, { "type": "extra", "content": "\n\n" },
110+
],
111+
[
112+
{ "type": "extra", "content": "\t\t" }, { "type": "property", "content": "A2" }, { "type": "extra", "content": " " }, { "type": "extra", "content": "=" }, { "type": "extra", "content": " " }, { "type": "value", "content": "X" }, { "type": "extra", "content": "\n" },
113+
],
114+
[
115+
{ "type": "extra", "content": "\t\t" }, { "type": "property", "content": "B1" }, { "type": "extra", "content": " " }, { "type": "extra", "content": "=" }, { "type": "extra", "content": " " }, { "type": "value", "content": "X" }, { "type": "extra", "content": "\n" },
116+
{ "type": "extra", "content": " " }, { "type": "extra", "content": "\n" },
117+
],
118+
[
119+
{ "type": "extra", "content": "\t\t" }, { "type": "property", "content": "B2" }, { "type": "extra", "content": " " }, { "type": "extra", "content": "=" }, { "type": "extra", "content": " " }, { "type": "value", "content": "X" }, { "type": "extra", "content": "\n" },
120+
],
121+
[
122+
{ "type": "extra", "content": "\t\t" }, { "type": "property", "content": "C1" }, { "type": "extra", "content": " " }, { "type": "extra", "content": "=" }, { "type": "extra", "content": " " }, { "type": "value", "content": "X" }, { "type": "extra", "content": "\n" },
123+
{ "type": "extra", "content": "//foo" }, { "type": "extra", "content": "\n" },
124+
],
125+
[
126+
{ "type": "extra", "content": "\t\t" }, { "type": "property", "content": "C2" }, { "type": "extra", "content": " " }, { "type": "extra", "content": "=" }, { "type": "extra", "content": " " }, { "type": "value", "content": "X" },
127+
]
128+
]}
129+
]
130+
]}
131+
]
132+
])
133+
test("deindentation_3", [
134+
[
135+
{ "type": "property", "content": "AddEffect" }, { "type": "extra", "content": " " }, { "type": "extra", "content": "=" }, { "type": "extra", "content": " " }, { "type": "value", "content": "MOPixel" }, { "type": "extra", "content": "\n" },
136+
{ "type": "children", "content": [
137+
[
138+
{ "type": "extra", "content": "\t" }, { "type": "property", "content": "PresetName" }, { "type": "extra", "content": " " }, { "type": "extra", "content": "=" }, { "type": "extra", "content": " " }, { "type": "value", "content": "Foo" }, { "type": "extra", "content": "\n" },
139+
{ "type": "children", "content": [
140+
[
141+
{ "type": "extra", "content": "\t\t" }, { "type": "property", "content": "A1" }, { "type": "extra", "content": " " }, { "type": "extra", "content": "=" }, { "type": "extra", "content": " " }, { "type": "value", "content": "X" }, { "type": "extra", "content": "\n" },
142+
{ "type": "extra", "content": "\t" }, { "type": "extra", "content": "\n" },
143+
],
144+
[
145+
{ "type": "extra", "content": "\t\t" }, { "type": "property", "content": "A2" }, { "type": "extra", "content": " " }, { "type": "extra", "content": "=" }, { "type": "extra", "content": " " }, { "type": "value", "content": "X" }, { "type": "extra", "content": "\n" },
146+
],
147+
[
148+
{ "type": "extra", "content": "\t\t" }, { "type": "property", "content": "B1" }, { "type": "extra", "content": " " }, { "type": "extra", "content": "=" }, { "type": "extra", "content": " " }, { "type": "value", "content": "X" }, { "type": "extra", "content": "\n" },
149+
{ "type": "extra", "content": "\t" }, { "type": "extra", "content": " " }, { "type": "extra", "content": "\n" },
150+
],
151+
[
152+
{ "type": "extra", "content": "\t\t" }, { "type": "property", "content": "B2" }, { "type": "extra", "content": " " }, { "type": "extra", "content": "=" }, { "type": "extra", "content": " " }, { "type": "value", "content": "X" }, { "type": "extra", "content": "\n" },
153+
],
154+
[
155+
{ "type": "extra", "content": "\t\t" }, { "type": "property", "content": "C1" }, { "type": "extra", "content": " " }, { "type": "extra", "content": "=" }, { "type": "extra", "content": " " }, { "type": "value", "content": "X" }, { "type": "extra", "content": "\n" },
156+
{ "type": "extra", "content": "\t" }, { "type": "extra", "content": "//foo" }, { "type": "extra", "content": "\n" },
157+
],
158+
[
159+
{ "type": "extra", "content": "\t\t" }, { "type": "property", "content": "C2" }, { "type": "extra", "content": " " }, { "type": "extra", "content": "=" }, { "type": "extra", "content": " " }, { "type": "value", "content": "X" },
160+
]
161+
]}
162+
]
163+
]}
164+
]
165+
])
74166

75167

76168
def test(filename, expected):

0 commit comments

Comments
 (0)