@@ -10,27 +10,31 @@ def get_parsed_tokens(tokens, parsed, token_idx, depth=-1):
10
10
while token_idx [0 ] < len (tokens ):
11
11
token = tokens [token_idx [0 ]]
12
12
13
- if state == "start" and token ["type" ] == "TABS" and is_less_deep (depth , token ):
14
- return
13
+ if depth == - 1 :
14
+ parsed .append ([])
15
+ get_parsed_tokens (tokens , parsed [- 1 ], token_idx , depth + 1 )
16
+
15
17
elif state == "start" and token ["type" ] == "TABS" and is_deeper (depth , token ):
16
18
parsed .append (
17
19
{ "type" : "lines_tokens" , "content" : [
18
20
[
19
- { "type" : "extra" , "content" : token [ "content" ] }
21
+
20
22
]
21
23
]}
22
24
)
23
- token_idx [0 ] += 1
24
25
get_parsed_tokens (tokens , parsed [- 1 ]["content" ][0 ], token_idx , depth + 1 )
26
+
25
27
elif state == "start" and token ["type" ] == "TABS" :
26
- return
27
- elif state == "start" and token ["type" ] == "WORD" and depth == - 1 :
28
- parsed .append ([])
29
- get_parsed_tokens (tokens , parsed [- 1 ], token_idx , depth + 1 )
30
- elif state == "start" and token ["type" ] == "WORD" :
28
+ parsed .append ( { "type" : "extra" , "content" : token ["content" ] } )
29
+ state = "tabs"
30
+ token_idx [0 ] += 1
31
+ elif (state == "start" or state == "tabs" ) and token ["type" ] == "WORD" :
31
32
parsed .append ( { "type" : "property" , "content" : token ["content" ] } )
32
33
state = "property"
33
34
token_idx [0 ] += 1
35
+ elif state == "start" and is_less_deep (depth , token ):
36
+ return
37
+
34
38
elif state == "property" and token ["type" ] == "EQUALS" :
35
39
parsed .append ( { "type" : "extra" , "content" : token ["content" ] } )
36
40
state = "equals"
@@ -43,6 +47,7 @@ def get_parsed_tokens(tokens, parsed, token_idx, depth=-1):
43
47
parsed .append ( { "type" : "extra" , "content" : token ["content" ] } )
44
48
state = "start"
45
49
token_idx [0 ] += 1
50
+
46
51
else :
47
52
parsed .append ( { "type" : "extra" , "content" : token ["content" ] } )
48
53
token_idx [0 ] += 1
@@ -51,13 +56,13 @@ def get_parsed_tokens(tokens, parsed, token_idx, depth=-1):
51
56
52
57
53
58
def is_less_deep (depth , token ):
54
- return get_depth (token [ "content" ] ) < depth
59
+ return get_depth (token ) < depth
55
60
56
61
57
62
def is_deeper (depth , token ):
58
63
# TODO: This should throw an error if it's deeper by more than 1.
59
- return get_depth (token [ "content" ] ) > depth
64
+ return get_depth (token ) > depth
60
65
61
66
62
- def get_depth (content ):
63
- return len (content )
67
+ def get_depth (token ):
68
+ return len (token [ " content" ] )
0 commit comments