Merge "Cache the lines that are read instead of re-reading"

This commit is contained in:
Jenkins 2014-09-08 17:30:04 +00:00 committed by Gerrit Code Review
commit 89779ed115
1 changed files with 9 additions and 6 deletions

View File

@ -35,6 +35,7 @@ class ParsedFile(object):
self._encoding = encoding self._encoding = encoding
self._doc = None self._doc = None
self._errors = None self._errors = None
self._lines = None
self._extension = os.path.splitext(filename)[1] self._extension = os.path.splitext(filename)[1]
@property @property
@ -72,8 +73,10 @@ class ParsedFile(object):
return self._doc return self._doc
def lines_iter(self, remove_trailing_newline=True): def lines_iter(self, remove_trailing_newline=True):
if self._lines is None:
with open(self.filename, 'rb') as fh: with open(self.filename, 'rb') as fh:
for line in fh: self._lines = list(fh)
for line in self._lines:
line = six.text_type(line, encoding=self.encoding) line = six.text_type(line, encoding=self.encoding)
if remove_trailing_newline and line.endswith("\n"): if remove_trailing_newline and line.endswith("\n"):
line = line[0:-1] line = line[0:-1]