diff --git a/python/builtins.py b/python/builtins.py index 9528160b..436cd39c 100644 --- a/python/builtins.py +++ b/python/builtins.py @@ -96,8 +96,8 @@ def sorted(iterable, reverse=False, key=None): return a ##### str ##### -def __f(self:str, *args, **kwargs) -> str: - def tokenizeString(s:str): +def __f(self: str, *args, **kwargs) -> str: + def tokenizeString(s: str): tokens = [] L, R = 0,0 @@ -205,20 +205,6 @@ def __f(self:str, *args, **kwargs) -> str: return ''.join(final_tokens) - # if '{}' in self: - # for i in range(len(args)): - # self = self.replace('{}', str(args[i]), 1) - # else: - # # Positional arguments will be followed by keyword arguments - # # 1. Replace the positional arguments - # for i,a in enumerate(args): - # self = self.replace('{'+str(i)+'}', str(a)) - - # # 2. Replace the keyword arguments - # for k,v in kwargs.items(): - # self = self.replace('{'+k+'}', str(v)) - - # return self str.format = __f def __f(self, chars=None): diff --git a/tests/04_str.py b/tests/04_str.py index dd4a1587..6a2e1a44 100644 --- a/tests/04_str.py +++ b/tests/04_str.py @@ -97,6 +97,19 @@ assert "{0} {1} {2}".format("I", "love", "Python") == "I love Python" assert "{2} {1} {0}".format("I", "love", "Python") == "Python love I" assert "{0}{1}{0}".format("abra", "cad") == "abracadabra" +assert "{k}={v}".format(k="key", v="value") == "key=value" +assert "{k}={k}".format(k="key") == "key=key" +assert "{0}={1}".format('{0}', '{1}') == "{0}={1}" +assert "{{{0}}}".format(1) == "{1}" +assert "{0}{1}{1}".format(1, 2, 3) == "122" +try: + "{0}={1}}".format(1, 2) + exit(1) +except ValueError: + pass +assert "{{{}xxx{}x}}".format(1, 2) == "{1xxx2x}" +assert "{{abc}}".format() == "{abc}" + # 3rd slice a = "Hello, World!" assert a[::-1] == "!dlroW ,olleH"