blueloveTH 2 年 前
コミット
098b85f89b
2 ファイル変更15 行追加16 行削除
  1. 2 16
      python/builtins.py
  2. 13 0
      tests/04_str.py

+ 2 - 16
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):

+ 13 - 0
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"