in src/google/appengine/_internal/antlr3/streams.py [0:0]
def toString(self, *args):
if len(args) == 0:
programName = self.DEFAULT_PROGRAM_NAME
start = self.MIN_TOKEN_INDEX
end = self.size() - 1
elif len(args) == 1:
programName = args[0]
start = self.MIN_TOKEN_INDEX
end = self.size() - 1
elif len(args) == 2:
programName = self.DEFAULT_PROGRAM_NAME
start = args[0]
end = args[1]
if start is None:
start = self.MIN_TOKEN_INDEX
elif not isinstance(start, int):
start = start.index
if end is None:
end = len(self.tokens) - 1
elif not isinstance(end, int):
end = end.index
if end >= len(self.tokens):
end = len(self.tokens) - 1
if start < 0:
start = 0
rewrites = self.programs.get(programName)
if rewrites is None or len(rewrites) == 0:
return self.toOriginalString(start, end)
buf = StringIO()
indexToOp = self.reduceToSingleOperationPerIndex(rewrites)
i = start
while i <= end and i < len(self.tokens):
op = indexToOp.get(i)
try:
del indexToOp[i]
except KeyError:
pass
t = self.tokens[i]
if op is None:
buf.write(t.text)
i += 1
else:
i = op.execute(buf)
if end == len(self.tokens) - 1:
for i in sorted(indexToOp.keys()):
op = indexToOp[i]
if op.index >= len(self.tokens) - 1:
buf.write(op.text)
return buf.getvalue()