Skip to content
This repository was archived by the owner on Mar 23, 2023. It is now read-only.

Commit 86550b2

Browse files
S-YOUtrotterdylan
authored andcommitted
Add stdlib string tests (#181)
1 parent a09bb56 commit 86550b2

7 files changed

Lines changed: 1913 additions & 31 deletions

File tree

Makefile

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,10 @@ STDLIB_TESTS := \
8080
tempfile_test \
8181
test/seq_tests \
8282
test/test_tuple \
83+
test/mapping_tests \
84+
test/test_dict \
85+
test/string_tests \
86+
test/test_string \
8387
threading_test \
8488
time_test \
8589
types_test \

third_party/stdlib/string.py

Lines changed: 34 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ def maketrans(fromstr, tostr):
8282

8383

8484
####################################################################
85-
#import re as _re
85+
import re as _re
8686

8787
class _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

126137
class 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

Comments
 (0)