summaryrefslogtreecommitdiffstats
path: root/Lib/string.py
diff options
context:
space:
mode:
authorRaymond Hettinger <python@rcn.com>2004-08-26 00:21:13 (GMT)
committerRaymond Hettinger <python@rcn.com>2004-08-26 00:21:13 (GMT)
commit0d58e2be0b81c12b0056d458a0480dc525af1abb (patch)
treeb389a6e78456900f6fdc6e3d9f8d599b34732835 /Lib/string.py
parenta6b68327b2aab767197f513c18abb5db496241d7 (diff)
downloadcpython-0d58e2be0b81c12b0056d458a0480dc525af1abb.zip
cpython-0d58e2be0b81c12b0056d458a0480dc525af1abb.tar.gz
cpython-0d58e2be0b81c12b0056d458a0480dc525af1abb.tar.bz2
Minor improvements to the template code.
* Add comment bars segregating this code from the rest. * Improve readability of the re pattern with indentation and comments on the same line. * Replace the groupdict() and get() pair with a direct call to group() which does the same thing.
Diffstat (limited to 'Lib/string.py')
-rw-r--r--Lib/string.py33
1 files changed, 15 insertions, 18 deletions
diff --git a/Lib/string.py b/Lib/string.py
index d166f38..9965111 100644
--- a/Lib/string.py
+++ b/Lib/string.py
@@ -79,6 +79,7 @@ def maketrans(fromstr, tostr):
+####################################################################
import re as _re
class Template(unicode):
@@ -87,25 +88,20 @@ class Template(unicode):
# Search for $$, $identifier, ${identifier}, and any bare $'s
pattern = _re.compile(r"""
-# Match exactly two $'s -- this is the escape sequence
-(?P<escaped>\${2})|
-# Match a $ followed by a Python identifier
-\$(?P<named>[_a-z][_a-z0-9]*)|
-# Match a $ followed by a brace delimited identifier
-\${(?P<braced>[_a-z][_a-z0-9]*)}|
-# Match any other $'s
-(?P<bogus>\$)
-""", _re.IGNORECASE | _re.VERBOSE)
+ (?P<escaped>\${2})| # Escape sequence of two $ signs
+ \$(?P<named>[_a-z][_a-z0-9]*)| # $ and a Python identifier
+ \${(?P<braced>[_a-z][_a-z0-9]*)}| # $ and a brace delimited identifier
+ (?P<bogus>\$) # Other ill-formed $ expressions
+ """, _re.IGNORECASE | _re.VERBOSE)
def __mod__(self, mapping):
def convert(mo):
- groups = mo.groupdict()
- if groups.get('escaped') is not None:
+ if mo.group('escaped') is not None:
return '$'
- if groups.get('bogus') is not None:
+ if mo.group('bogus') is not None:
raise ValueError('Invalid placeholder at index %d' %
mo.start('bogus'))
- val = mapping[groups.get('named') or groups.get('braced')]
+ val = mapping[mo.group('named') or mo.group('braced')]
return unicode(val)
return self.pattern.sub(convert, self)
@@ -121,27 +117,28 @@ class SafeTemplate(Template):
def __mod__(self, mapping):
def convert(mo):
- groups = mo.groupdict()
- if groups.get('escaped') is not None:
+ if mo.group('escaped') is not None:
return '$'
- if groups.get('bogus') is not None:
+ if mo.group('bogus') is not None:
raise ValueError('Invalid placeholder at index %d' %
mo.start('bogus'))
- named = groups.get('named')
+ named = mo.group('named')
if named is not None:
try:
return unicode(mapping[named])
except KeyError:
return '$' + named
- braced = groups.get('braced')
+ braced = mo.group('braced')
try:
return unicode(mapping[braced])
except KeyError:
return '${' + braced + '}'
return self.pattern.sub(convert, self)
+del _re
+####################################################################
# NOTE: Everything below here is deprecated. Use string methods instead.
# This stuff will go away in Python 3.0.