Browse Source

Added better string formatting as required by Issue#138

S. Mahmudul Hasan 2 years ago
parent
commit
0fef360caf
1 changed files with 10 additions and 3 deletions
  1. 10 3
      python/builtins.py

+ 10 - 3
python/builtins.py

@@ -96,13 +96,20 @@ def sorted(iterable, reverse=False, key=None):
     return a
     return a
 
 
 ##### str #####
 ##### str #####
-def __f(self, *args):
+def __f(self, *args, **kwargs):
     if '{}' in self:
     if '{}' in self:
         for i in range(len(args)):
         for i in range(len(args)):
             self = self.replace('{}', str(args[i]), 1)
             self = self.replace('{}', str(args[i]), 1)
     else:
     else:
-        for i in range(len(args)):
-            self = self.replace('{'+str(i)+'}', str(args[i]))
+        # 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
     return self
 str.format = __f
 str.format = __f