Skip to content

Commit

Permalink
Handle c-quoted strings (#31)
Browse files Browse the repository at this point in the history
  • Loading branch information
Eeems authored Aug 17, 2023
1 parent 186c04b commit 0fd01c6
Showing 1 changed file with 12 additions and 3 deletions.
15 changes: 12 additions & 3 deletions toltec/bash.py
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 220,10 @@ def _parse_indexed(lexer: shlex.shlex) -> IndexedArray:
index = int(lexer.get_token() or "")
assert lexer.get_token() == "]"
assert lexer.get_token() == "="
value = _parse_string(lexer.get_token() or "")
string_token = lexer.get_token() or ""
if string_token == "$":
string_token = lexer.get_token() or ""
value = _parse_string(string_token)

# Grow the result array so that the index exists
if index >= len(result):
Expand Down Expand Up @@ -261,7 264,10 @@ def _parse_assoc(lexer: shlex.shlex) -> AssociativeArray:
assert key is not None
assert lexer.get_token() == "]"
assert lexer.get_token() == "="
value = _parse_string(lexer.get_token() or "")
string_token = lexer.get_token() or ""
if string_token == "$":
string_token = lexer.get_token() or ""
value = _parse_string(string_token)

result[key] = value

Expand Down Expand Up @@ -302,7 308,10 @@ def _parse_var(lexer: shlex.shlex) -> Tuple[str, Optional[Any]]:
elif "A" in var_flags:
var_value = _parse_assoc(lexer)
else:
var_value = _parse_string(lexer.get_token() or "")
string_token = lexer.get_token() or ""
if string_token == "$":
string_token = lexer.get_token() or ""
var_value = _parse_string(string_token)
else:
lexer.push_token(lookahead)

Expand Down

0 comments on commit 0fd01c6

Please sign in to comment.