mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
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``.
This commit is contained in:
parent
f9f17346d7
commit
ba4279683f
4 changed files with 45 additions and 4 deletions
|
@ -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):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue