summaryrefslogtreecommitdiffstats
path: root/Lib/string.py
diff options
context:
space:
mode:
authorBarry Warsaw <barry@python.org>2017-09-04 20:32:10 (GMT)
committerGitHub <noreply@github.com>2017-09-04 20:32:10 (GMT)
commitba4279683f8eb8f59be10d12547ea89480614388 (patch)
treea04e6ac5d0855275d27308072b05c7635423ed9e /Lib/string.py
parentf9f17346d722b6f073a048b41ec0d6adf336d1d2 (diff)
downloadcpython-ba4279683f8eb8f59be10d12547ea89480614388.zip
cpython-ba4279683f8eb8f59be10d12547ea89480614388.tar.gz
cpython-ba4279683f8eb8f59be10d12547ea89480614388.tar.bz2
bpo-1198569: Allow string.Template braced pattern to be different (#3288)
* bpo-1198569: Allow the braced pattern to be different ``string.Template`` subclasses can optionally define ``braceidpattern`` if they want to specify different placeholder patterns inside and outside the braces. If None (the default) it falls back to ``idpattern``.
Diffstat (limited to 'Lib/string.py')
-rw-r--r--Lib/string.py4
1 files changed, 3 insertions, 1 deletions
diff --git a/Lib/string.py b/Lib/string.py
index bc9508c..b46e60c 100644
--- a/Lib/string.py
+++ b/Lib/string.py
@@ -57,7 +57,7 @@ class _TemplateMetaclass(type):
%(delim)s(?:
(?P<escaped>%(delim)s) | # Escape sequence of two delimiters
(?P<named>%(id)s) | # delimiter and a Python identifier
- {(?P<braced>%(id)s)} | # delimiter and a braced identifier
+ {(?P<braced>%(bid)s)} | # delimiter and a braced identifier
(?P<invalid>) # Other ill-formed delimiter exprs
)
"""
@@ -70,6 +70,7 @@ class _TemplateMetaclass(type):
pattern = _TemplateMetaclass.pattern % {
'delim' : _re.escape(cls.delimiter),
'id' : cls.idpattern,
+ 'bid' : cls.braceidpattern or cls.idpattern,
}
cls.pattern = _re.compile(pattern, cls.flags | _re.VERBOSE)
@@ -79,6 +80,7 @@ class Template(metaclass=_TemplateMetaclass):
delimiter = '$'
idpattern = r'[_a-z][_a-z0-9]*'
+ braceidpattern = None
flags = _re.IGNORECASE
def __init__(self, template):