@@ -82,7 +82,7 @@ def maketrans(fromstr, tostr):
8282
8383
8484####################################################################
85- # import re as _re
85+ import re as _re
8686
8787class _multimap (object ):
8888 """Helper class for combining multiple mappings.
@@ -101,36 +101,47 @@ def __getitem__(self, key):
101101 return self ._secondary [key ]
102102
103103
104- # class _TemplateMetaclass(type):
105- # pattern = r"""
106- # %(delim)s(?:
107- # (?P<escaped>%(delim)s) | # Escape sequence of two delimiters
108- # (?P<named>%(id)s) | # delimiter and a Python identifier
109- # {(?P<braced>%(id)s)} | # delimiter and a braced identifier
110- # (?P<invalid>) # Other ill-formed delimiter exprs
111- # )
112- # """
113-
114- # def __init__(cls, name, bases, dct):
115- # super(_TemplateMetaclass, cls).__init__(name, bases, dct)
116- # if 'pattern' in dct:
117- # pattern = cls.pattern
118- # else:
119- # pattern = _TemplateMetaclass.pattern % {
120- # 'delim' : _re.escape(cls.delimiter),
121- # 'id' : cls.idpattern,
122- # }
123- # cls.pattern = _re.compile(pattern, _re.IGNORECASE | _re.VERBOSE)
104+ class _TemplateMetaclass (type ):
105+ # pattern = r"""
106+ # %(delim)s(?:
107+ # (?P<escaped>%(delim)s) | # Escape sequence of two delimiters
108+ # (?P<named>%(id)s) | # delimiter and a Python identifier
109+ # {(?P<braced>%(id)s)} | # delimiter and a braced identifier
110+ # (?P<invalid>) # Other ill-formed delimiter exprs
111+ # )
112+ # """
113+ pattern = r"""
114+ %s(?:
115+ (?P<escaped>%s) | # Escape sequence of two delimiters
116+ (?P<named>%s) | # delimiter and a Python identifier
117+ {(?P<braced>%s)} | # delimiter and a braced identifier
118+ (?P<invalid>) # Other ill-formed delimiter exprs
119+ )
120+ """
121+
122+ def __init__ (cls , name , bases , dct ):
123+ # super(_TemplateMetaclass, cls).__init__(name, bases, dct)
124+ super (_TemplateMetaclass , cls )
125+ if 'pattern' in dct :
126+ pattern = cls .pattern
127+ else :
128+ # pattern = _TemplateMetaclass.pattern % {
129+ # 'delim' : _re.escape(cls.delimiter),
130+ # 'id' : cls.idpattern,
131+ # }
132+ cls_delim , cls_id = _re .escape (cls .delimiter ), cls .idpattern
133+ pattern = _TemplateMetaclass .pattern % (cls_delim , cls_delim , cls_id , cls_id )
134+ cls .pattern = _re .compile (pattern , _re .IGNORECASE | _re .VERBOSE )
124135
125136
126137class Template (object ):
127138 """A string class for supporting $-substitutions."""
128- # __metaclass__ = _TemplateMetaclass
139+ __metaclass__ = _TemplateMetaclass
129140
130141 delimiter = '$'
131142 idpattern = r'[_a-z][_a-z0-9]*'
132143
133- def __init__ (self , template ):
144+ def __init__ (self , template , * arg ):
134145 self .template = template
135146
136147 # Search for $$, $identifier, ${identifier}, and any bare $'s
0 commit comments