diff --git a/elisa_pl.py b/elisa_pl.py index 82cb250..c2cbde9 100644 --- a/elisa_pl.py +++ b/elisa_pl.py @@ -1,11 +1,14 @@ +from ast import arg +from dataclasses import replace import re import random ARG_LITERAL = '%' +MAX_ARGS = 5 GOODBYES =["Do zobaczenia", "Elo"] QUIT = "wyjscie" -pairs = ( ('test (.*)', ('%1',)), ('test2 (.*)', ('%1 2',)) ) +pairs = ( ('test (.*)', ('%1',)), ('(.*) test2 (.*)', ('%1 2 %2',)), ('test2 (.*)', ('%1 2',)) ) def main(): @@ -24,7 +27,8 @@ def main(): continue ans = pick_answer(pair) - print(substitute_arg(ans, search.groups())) + print(replace_args(ans, search)) + break; print(random.choice(GOODBYES)) @@ -33,10 +37,24 @@ def should_quit(input): return QUIT in input -def substitute_arg(pattern, sub): - # TODO: More than one argument support - arg = ARG_LITERAL + '1' - return pattern.replace(arg, sub[0]) +def get_full_arg_str(arg_number): + return ARG_LITERAL + str(arg_number) + + +def replace_args(pattern, match): + arg_number = 1 + result = pattern + while arg_number <= MAX_ARGS: + if get_full_arg_str(arg_number) in result: + result = substitute_arg(result, match.group(arg_number), arg_number) + arg_number += 1 + + return result + + +def substitute_arg(pattern, sub, group_number): + arg = get_full_arg_str(group_number) + return pattern.replace(arg, sub) def pick_answer(pair):