def argsplit(args, sep='<STR_LIT:U+002C>'):
parsed_len = <NUM_LIT:0><EOL>last = <NUM_LIT:0><EOL>splits = []<EOL>for e in bracket_split(args, brackets=['<STR_LIT>', '<STR_LIT>', '<STR_LIT:{}>']):<EOL><INDENT>if e[<NUM_LIT:0>] not in ('<STR_LIT:(>', '<STR_LIT:[>', '<STR_LIT:{>'):<EOL><INDENT>for i, char in enumerate(e):<EOL><INDENT>if char == sep:<EOL><INDENT>splits.append(args[last:parsed_len + i])<EOL>last = parsed_len + i + <NUM_LIT:1><EOL><DEDENT><DEDENT><DEDENT>parsed_len += len(e)<EOL><DEDENT>splits.append(args[last:])<EOL>return splits<EOL>
used to split JS args (it is not that simple as it seems because
       sep can be inside brackets).

       pass args *without* brackets!

       Used also to parse array and object elements, and more