def toString()

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()