feat: Allow in-string expressions
This commit is contained in:
parent
a17fd9b3df
commit
2459df464d
56
main.py
56
main.py
|
@ -68,40 +68,48 @@ def treeClimb(nodes, char):
|
|||
return (True, char)
|
||||
|
||||
|
||||
lineno = 0
|
||||
|
||||
try:
|
||||
with open("/etc/nixos/components/programs/imunes.nix", "r") as file:
|
||||
while (line := file.readline()):
|
||||
lineno += 1
|
||||
for char in line:
|
||||
added = False
|
||||
if last_opener == "\"":
|
||||
if char == "\"":
|
||||
if prev_char != "\\":
|
||||
last_opener = treeDescend(nodes)
|
||||
elif char == "{" and prev_char == "$" and prev_prev_char != "\\":
|
||||
if last_opener == '"':
|
||||
if char == "\\":
|
||||
prev_sequential = sequential
|
||||
sequential += 1
|
||||
elif char == "{" and prev_char == "$" and prev_sequential % 2 != 1:
|
||||
added, last_opener = treeClimb(nodes, char)
|
||||
else:
|
||||
if last_opener == "'":
|
||||
if char == "'":
|
||||
prev_sequential = sequential
|
||||
sequential += 1
|
||||
elif char == "{" and prev_char == "$" and prev_sequential % 3 != 2:
|
||||
added, last_opener = treeClimb(nodes, char)
|
||||
else:
|
||||
if sequential % 3 == 2 and char != "$":
|
||||
last_opener = treeDescend(nodes)
|
||||
prev_sequential = sequential
|
||||
sequential = 0
|
||||
else:
|
||||
if char == "\"":
|
||||
added, last_opener = treeClimb(nodes, char)
|
||||
elif char == "'" and prev_char == "'":
|
||||
added, last_opener = treeClimb(nodes, char)
|
||||
elif char in openers:
|
||||
added, last_opener = treeClimb(nodes, char)
|
||||
elif char in closers:
|
||||
if char == '"' and sequential % 2 == 1:
|
||||
last_opener = treeDescend(nodes)
|
||||
prev_sequential = sequential
|
||||
sequential = 0
|
||||
elif last_opener == "'":
|
||||
if char == "'":
|
||||
prev_sequential = sequential
|
||||
sequential += 1
|
||||
elif char == "{" and prev_char == "$" and prev_sequential % 3 != 2:
|
||||
added, last_opener = treeClimb(nodes, char)
|
||||
else:
|
||||
if sequential % 3 == 2 and char != "$":
|
||||
last_opener = treeDescend(nodes)
|
||||
prev_sequential = sequential
|
||||
sequential = 0
|
||||
else:
|
||||
if char == '"':
|
||||
added, last_opener = treeClimb(nodes, char)
|
||||
elif char == "'" and prev_char == "'":
|
||||
added, last_opener = treeClimb(nodes, char)
|
||||
elif char in openers:
|
||||
added, last_opener = treeClimb(nodes, char)
|
||||
elif char in closers:
|
||||
last_opener = treeDescend(nodes)
|
||||
if not added:
|
||||
getTopNode(nodes)[-1] += char
|
||||
prev_char = char
|
||||
|
||||
# printTree(nodes)
|
||||
pprint(nodes)
|
||||
|
|
Loading…
Reference in New Issue