~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/knit.py

Merge bzr.dev

Show diffs side-by-side

added added

removed removed

Lines of Context:
203
203
            result.append((start, end, count, contents))
204
204
        return result
205
205
 
 
206
    def get_fulltext_content(self, lines):
 
207
        """Extract just the content lines from a fulltext."""
 
208
        return (line.split(' ', 1)[1] for line in lines)
 
209
 
 
210
    def get_linedelta_content(self, lines):
 
211
        """Extract just the content from a line delta.
 
212
 
 
213
        This doesn't return all of the extra information stored in a delta.
 
214
        Only the actual content lines.
 
215
        """
 
216
        lines = iter(lines)
 
217
        next = lines.next
 
218
        for header in lines:
 
219
            header = header.split(',')
 
220
            count = int(header[2])
 
221
            for i in xrange(count):
 
222
                origin, text = next().split(' ', 1)
 
223
                yield text
 
224
 
206
225
    def lower_fulltext(self, content):
207
226
        """convert a fulltext content record into a serializable form.
208
227
 
251
270
    def parse_line_delta(self, lines, version):
252
271
        return list(self.parse_line_delta_iter(lines, version))
253
272
 
 
273
    def get_fulltext_content(self, lines):
 
274
        """Extract just the content lines from a fulltext."""
 
275
        return iter(lines)
 
276
 
 
277
    def get_linedelta_content(self, lines):
 
278
        """Extract just the content from a line delta.
 
279
 
 
280
        This doesn't return all of the extra information stored in a delta.
 
281
        Only the actual content lines.
 
282
        """
 
283
        lines = iter(lines)
 
284
        next = lines.next
 
285
        for header in lines:
 
286
            header = header.split(',')
 
287
            count = int(header[2])
 
288
            for i in xrange(count):
 
289
                yield next()
 
290
 
254
291
    def lower_fulltext(self, content):
255
292
        return content.text()
256
293
 
845
882
            pb.update('Walking content.', version_idx, total)
846
883
            method = self._index.get_method(version_id)
847
884
            version_idx = self._index.lookup(version_id)
 
885
 
848
886
            assert method in ('fulltext', 'line-delta')
849
887
            if method == 'fulltext':
850
 
                content = self.factory.parse_fulltext(data, version_idx)
851
 
                for line in content.text():
852
 
                    yield line
 
888
                line_iterator = self.factory.get_fulltext_content(data)
853
889
            else:
854
 
                delta = self.factory.parse_line_delta(data, version_idx)
855
 
                for start, end, count, lines in delta:
856
 
                    for origin, line in lines:
857
 
                        yield line
 
890
                line_iterator = self.factory.get_linedelta_content(data)
 
891
            for line in line_iterator:
 
892
                yield line
 
893
 
858
894
        pb.update('Walking content.', total, total)
859
895
        
860
896
    def num_versions(self):