'return new source object with trailing
and leading blank lines removed.'

def strip(self):

    (start, end) = (0, len(self))
    while ((start < end) and (not self.lines[start].strip())):
        start += 1
    while ((end > start) and (not self.lines[(end - 1)].strip())):
        end -= 1
    source = Source()
    source.lines[:] = self.lines[start:end]
    return source
