Skip to content

Commit e6a2e04

Browse files
committed
Encapsulate Match object fields better
1 parent 9dda0ec commit e6a2e04

File tree

1 file changed

+30
-18
lines changed

1 file changed

+30
-18
lines changed

graalpython/lib-graalpython/_sre.py

Lines changed: 30 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -159,15 +159,15 @@ def setup(sre_compiler, error_class, flags_table):
159159

160160
class SRE_Match():
161161
def __init__(self, pattern, pos, endpos, result, input_str, compiled_regex):
162-
self.result = result
163-
self.compiled_regex = compiled_regex
164-
self.re = pattern
165-
self.pos = pos
166-
self.endpos = endpos
167-
self.input_str = input_str
162+
self.__result = result
163+
self.__compiled_regex = compiled_regex
164+
self.__re = pattern
165+
self.__pos = pos
166+
self.__endpos = endpos
167+
self.__input_str = input_str
168168

169169
def end(self, groupnum=0):
170-
return self.result.getEnd(groupnum)
170+
return self.__result.getEnd(groupnum)
171171

172172
def group(self, *args):
173173
if not args:
@@ -182,7 +182,7 @@ def group(self, *args):
182182

183183
def groups(self, default=None):
184184
lst = []
185-
for arg in range(1, self.compiled_regex.groupCount):
185+
for arg in range(1, self.__compiled_regex.groupCount):
186186
lst.append(self.__group(arg, default))
187187
return tuple(lst)
188188

@@ -192,46 +192,58 @@ def __getitem__(self, item):
192192
def __groupidx(self, idx):
193193
try:
194194
if isinstance(idx, str):
195-
return self.compiled_regex.groups[idx]
196-
elif 0 <= idx < self.compiled_regex.groupCount:
195+
return self.__compiled_regex.groups[idx]
196+
elif 0 <= idx < self.__compiled_regex.groupCount:
197197
return idx
198198
except Exception:
199199
pass
200200
raise IndexError("no such group")
201201

202202
def __group(self, idx, default=None):
203203
idxarg = self.__groupidx(idx)
204-
start = self.result.getStart(idxarg)
204+
start = self.__result.getStart(idxarg)
205205
if start < 0:
206206
return default
207207
else:
208-
return self.input_str[start:self.result.getEnd(idxarg)]
208+
return self.__input_str[start:self.__result.getEnd(idxarg)]
209209

210210
def groupdict(self, default=None):
211-
groups = self.compiled_regex.groups
211+
groups = self.__compiled_regex.groups
212212
if groups:
213213
return {name: self.__group(name, default) for name in dir(groups)}
214214
return {}
215215

216216
def span(self, groupnum=0):
217217
idxarg = self.__groupidx(groupnum)
218-
return (self.result.getStart(idxarg), self.result.getEnd(idxarg))
218+
return (self.__result.getStart(idxarg), self.__result.getEnd(idxarg))
219219

220220
def start(self, groupnum=0):
221221
idxarg = self.__groupidx(groupnum)
222-
return self.result.getStart(idxarg)
222+
return self.__result.getStart(idxarg)
223223

224224
@property
225225
def string(self):
226-
return self.input_str
226+
return self.__input_str
227+
228+
@property
229+
def re(self):
230+
return self.__re
231+
232+
@property
233+
def pos(self):
234+
return self.__pos
235+
236+
@property
237+
def endpos(self):
238+
return self.__endpos
227239

228240
@property
229241
def lastgroup(self):
230-
return self.compiled_regex.groupCount
242+
return self.__compiled_regex.groupCount
231243

232244
@property
233245
def lastindex(self):
234-
return self.result.getEnd(0)
246+
return self.__result.getEnd(0)
235247

236248
def __repr__(self):
237249
return "<re.Match object; span=%r, match=%r>" % (self.span(), self.group())

0 commit comments

Comments
 (0)