Skip to content

Commit

Permalink
Refactor argument formatting with recursion and quote removal
Browse files Browse the repository at this point in the history
Signed-off-by: kwakubiney <[email protected]>
  • Loading branch information
kwakubiney committed Jan 23, 2025
1 parent adacf48 commit 6e30d15
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 11 deletions.
3 changes: 0 additions & 3 deletions compiler/annotations_utils/util_parsing.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,9 +66,6 @@ def parse_arg_list_to_command_invocation(
command, flags_options_operands
) -> CommandInvocationInitial:
cmd_name = format_arg_chars(command)
#strip quotes from command where necessary
#quoted commands are interpreted as non-parallelizable
cmd_name = cmd_name.strip().strip('"').strip("'")
json_data = get_json_data(cmd_name)
set_of_all_flags: Set[str] = get_set_of_all_flags(json_data)
dict_flag_to_primary_repr: dict[str, str] = get_dict_flag_to_primary_repr(json_data)
Expand Down
24 changes: 16 additions & 8 deletions compiler/shell_ast/ast_util.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,15 +44,23 @@ def __init__(self, text):
def check_if_ast_is_supported(construct, arguments, **kwargs):
return


def format_args(args):
formatted_args = [format_arg_chars(arg_chars) for arg_chars in args]
return formatted_args


def format_arg_chars(arg_chars):
chars = [format_arg_char(arg_char) for arg_char in arg_chars]
return "".join(chars)
return traverse_and_format(arg_chars)

def traverse_and_format(arg_char):
if isinstance(arg_char, list):
return "".join(traverse_and_format(c) for c in arg_char)
elif isinstance(arg_char, QArgChar):
return remove_quotes_from_quoted_content(arg_char.format())
elif isinstance(arg_char, (CArgChar, EArgChar)):
return format_arg_char(arg_char)
else:
# Fallback: not sure what the fallback for non recognized characters should be?
return format_arg_char(arg_char)

def remove_quotes_from_quoted_content(arg_char):
formatted_content = traverse_and_format(arg_char)
return formatted_content.strip('"').strip("'")


def format_arg_char(arg_char: ArgChar) -> str:
Expand Down

0 comments on commit 6e30d15

Please sign in to comment.