Example #1
0
class LineBuffer(object):

    def __init__(self):
        self._lines = []
        self._wrapper = MBTextWrapper(encoding='utf-8')

    def __len__(self):
        return len(self._lines)

    def __getitem__(self, i):
        return self._lines[i]

    def __setitem__(self, i, value):
        self._lines[i] = value

    def clear(self):
        self._lines[:] = []

    def read(self):
        return '\n'.join(self._lines)

    def write(self, s):
        #normalise whitespace
        s = ' '.join(s.split())
        self._lines.extend(self._wrapper.wrap(s))

    def rawwrite(self, s):
        self._lines.extend(s.splitlines())

    def indent(self, numspaces=4, start=0):
        linebuf = self._lines
        n = len(linebuf)
        if n > start:
            indent = ' ' * numspaces
            for i in range(start, n):
                linebuf[i] = indent + linebuf[i]

    def tab(self, num=1, start=0):
        linebuf = self._lines
        n = len(linebuf)
        if n > start:
            tab = '\t' * num
            for i in range(start, n):
                linebuf[i] = tab + linebuf[i]

    def lstrip(self):
        linebuf = self._lines
        for i in range(len(linebuf)):
            linebuf[i] = linebuf[i].lstrip()
Example #2
0
 def __init__(self):
     self._lines = []
     self._wrapper = MBTextWrapper(encoding='utf-8')