| # (c) 2005 Ian Bicking and contributors; written for Paste (http://pythonpaste.org) |
| # Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php |
| |
| class FileMixin(object): |
| |
| """ |
| Used to provide auxiliary methods to objects simulating files. |
| Objects must implement write, and read if they are input files. |
| Also they should implement close. |
| |
| Other methods you may wish to override: |
| * flush() |
| * seek(offset[, whence]) |
| * tell() |
| * truncate([size]) |
| |
| Attributes you may wish to provide: |
| * closed |
| * encoding (you should also respect that in write()) |
| * mode |
| * newlines (hard to support) |
| * softspace |
| """ |
| |
| def flush(self): |
| pass |
| |
| def next(self): |
| return self.readline() |
| |
| def readline(self, size=None): |
| # @@: This is a lame implementation; but a buffer would probably |
| # be necessary for a better implementation |
| output = [] |
| while 1: |
| next = self.read(1) |
| if not next: |
| return ''.join(output) |
| output.append(next) |
| if size and size > 0 and len(output) >= size: |
| return ''.join(output) |
| if next == '\n': |
| # @@: also \r? |
| return ''.join(output) |
| |
| def xreadlines(self): |
| return self |
| |
| def writelines(self, lines): |
| for line in lines: |
| self.write(line) |
| |
| |