]> granicus.if.org Git - python/commitdiff
substitute(), safe_substitute(): Paul Moore provides a better hack for dealing
authorBarry Warsaw <barry@python.org>
Mon, 13 Sep 2004 15:25:15 +0000 (15:25 +0000)
committerBarry Warsaw <barry@python.org>
Mon, 13 Sep 2004 15:25:15 +0000 (15:25 +0000)
with positional arguments.

Lib/string.py

index 9d6a602a7dddf4517f51d07017d1dde0ae2e0b32..3c5d7e3bd7196487c463acbcfc30011d5f9bbd6f 100644 (file)
@@ -143,28 +143,36 @@ class Template:
         raise ValueError('Invalid placeholder in string: line %d, col %d' %
                          (lineno, colno))
 
-    def substitute(self, __mapping=None, **kws):
-        if __mapping is None:
-            __mapping = kws
+    def substitute(self, *args, **kws):
+        if len(args) > 1:
+            raise TypeError('Too many positional arguments')
+        if not args:
+            mapping = kws
         elif kws:
-            __mapping = _multimap(kws, __mapping)
+            mapping = _multimap(kws, args[0])
+        else:
+            mapping = args[0]
         # Helper function for .sub()
         def convert(mo):
             if mo.group('escaped') is not None:
                 return '$'
             if mo.group('bogus') is not None:
                 self._bogus(mo)
-            val = __mapping[mo.group('named') or mo.group('braced')]
+            val = mapping[mo.group('named') or mo.group('braced')]
             # We use this idiom instead of str() because the latter will fail
             # if val is a Unicode containing non-ASCII characters.
             return '%s' % val
         return self.pattern.sub(convert, self.template)
 
-    def safe_substitute(self, __mapping=None, **kws):
-        if __mapping is None:
-            __mapping = kws
+    def safe_substitute(self, *args, **kws):
+        if len(args) > 1:
+            raise TypeError('Too many positional arguments')
+        if not args:
+            mapping = kws
         elif kws:
-            __mapping = _multimap(kws, __mapping)
+            mapping = _multimap(kws, args[0])
+        else:
+            mapping = args[0]
         # Helper function for .sub()
         def convert(mo):
             if mo.group('escaped') is not None:
@@ -176,12 +184,12 @@ class Template:
                 try:
                     # We use this idiom instead of str() because the latter
                     # will fail if val is a Unicode containing non-ASCII
-                    return '%s' % __mapping[named]
+                    return '%s' % mapping[named]
                 except KeyError:
                     return '$' + named
             braced = mo.group('braced')
             try:
-                return '%s' % __mapping[braced]
+                return '%s' % mapping[braced]
             except KeyError:
                 return '${' + braced + '}'
         return self.pattern.sub(convert, self.template)