~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/rio.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2009-05-14 18:29:44 UTC
  • mfrom: (4361.1.1 rio-optimized)
  • Revision ID: pqm@pqm.ubuntu.com-20090514182944-yz4v4ggktei02wo0
(jam) Some optimizations for RIO.

Show diffs side-by-side

added added

removed removed

Lines of Context:
284
284
    #       rather than a more specific error.
285
285
 
286
286
    for line in unicode_iter:
287
 
        if line is None or line == '':
 
287
        if line is None or line == u'':
288
288
            break       # end of file
289
 
        if line == '\n':
 
289
        if line == u'\n':
290
290
            break       # end of stanza
291
291
        real_l = line
292
 
        if line[0] == '\t': # continues previous value
 
292
        if line[0] == u'\t': # continues previous value
293
293
            if tag is None:
294
294
                raise ValueError('invalid continuation line %r' % real_l)
295
 
            accum_value += '\n' + line[1:-1]
 
295
            accum_value.append(u'\n' + line[1:-1])
296
296
        else: # new tag:value line
297
297
            if tag is not None:
298
 
                stanza.add(tag, accum_value)
 
298
                stanza.add(tag, u''.join(accum_value))
299
299
            try:
300
 
                colon_index = line.index(': ')
 
300
                colon_index = line.index(u': ')
301
301
            except ValueError:
302
302
                raise ValueError('tag/value separator not found in line %r'
303
303
                                 % real_l)
304
304
            tag = str(line[:colon_index])
305
305
            if not valid_tag(tag):
306
306
                raise ValueError("invalid rio tag %r" % (tag,))
307
 
            accum_value = line[colon_index+2:-1]
 
307
            accum_value = [line[colon_index+2:-1]]
308
308
 
309
309
    if tag is not None: # add last tag-value
310
 
        stanza.add(tag, accum_value)
 
310
        stanza.add(tag, u''.join(accum_value))
311
311
        return stanza
312
312
    else:     # didn't see any content
313
313
        return None