~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to weave.py

  • Committer: Martin Pool
  • Date: 2005-06-28 14:42:48 UTC
  • mto: This revision was merged to the branch mainline in revision 852.
  • Revision ID: mbp@sourcefrog.net-20050628144248-8dde96387e1d34e6
Abbreviate WeaveFormatError in some code

Doc

Show diffs side-by-side

added added

removed removed

Lines of Context:
272
272
        # TODO: Could split this into two functions, one that updates
273
273
        # the stack and the other that processes the results -- but
274
274
        # I'm not sure it's really needed.
 
275
 
 
276
        WFE = WeaveFormatError
275
277
        
276
278
        for l in self._l:
277
279
            if isinstance(l, tuple):
278
280
                c, v = l
279
281
                if c == '{':
280
282
                    if istack and (istack[-1] >= v):
281
 
                        raise WeaveFormatError("improperly nested insertions %d>=%d on line %d" 
282
 
                                               % (istack[-1], v, lineno))
 
283
                        raise WFE("improperly nested insertions %d>=%d on line %d" 
 
284
                                  % (istack[-1], v, lineno))
283
285
                    istack.append(v)
284
286
                elif c == '}':
285
287
                    try:
286
288
                        oldv = istack.pop()
287
289
                    except IndexError:
288
 
                        raise WeaveFormatError("unmatched close of insertion %d on line %d"
289
 
                                               % (v, lineno))
 
290
                        raise WFE("unmatched close of insertion %d on line %d"
 
291
                                  % (v, lineno))
290
292
                    if oldv != v:
291
 
                        raise WeaveFormatError("mismatched close of insertion %d!=%d on line %d"
292
 
                                               % (oldv, v, lineno))
 
293
                        raise WFE("mismatched close of insertion %d!=%d on line %d"
 
294
                                  % (oldv, v, lineno))
293
295
                elif c == '[':
294
296
                    # block deleted in v
295
297
                    if v in dset:
296
 
                        raise WeaveFormatError("repeated deletion marker for version %d on line %d"
297
 
                                               % (v, lineno))
 
298
                        raise WFE("repeated deletion marker for version %d on line %d"
 
299
                                  % (v, lineno))
298
300
                    if istack:
299
301
                        if istack[-1] == v:
300
 
                            raise WeaveFormatError("version %d deletes own text on line %d"
301
 
                                                   % (v, lineno))
 
302
                            raise WFE("version %d deletes own text on line %d"
 
303
                                      % (v, lineno))
302
304
                        dset.add(v)
303
305
                elif c == ']':
304
306
                    if v in dset:
305
307
                        dset.remove(v)
306
308
                    else:
307
 
                        raise WeaveFormatError("unmatched close of deletion %d on line %d"
308
 
                                               % (v, lineno))
 
309
                        raise WFE("unmatched close of deletion %d on line %d"
 
310
                                  % (v, lineno))
309
311
                else:
310
 
                    raise WeaveFormatError("invalid processing instruction %r on line %d"
311
 
                                           % (l, lineno))
 
312
                    raise WFE("invalid processing instruction %r on line %d"
 
313
                              % (l, lineno))
312
314
            else:
313
315
                assert isinstance(l, basestring)
314
316
                if not istack:
315
 
                    raise WeaveFormatError("literal at top level on line %d"
316
 
                                           % lineno)
 
317
                    raise WFE("literal at top level on line %d"
 
318
                              % lineno)
317
319
                isactive = (istack[-1] in included) \
318
320
                           and not included.intersection(dset)
319
321
                if isactive:
322
324
            lineno += 1
323
325
 
324
326
        if istack:
325
 
            raise WeaveFormatError("unclosed insertion blocks at end of weave",
 
327
            raise WFE("unclosed insertion blocks at end of weave",
326
328
                                   istack)
327
329
        if dset:
328
 
            raise WeaveFormatError("unclosed deletion blocks at end of weave",
 
330
            raise WFE("unclosed deletion blocks at end of weave",
329
331
                                   dset)
330
332
 
331
333
 
401
403
        # add a sentinal, because we can also match against the final line
402
404
        basis.append((None, len(self._l), None))
403
405
 
404
 
        # XXX: which line of the weave should we really consider matches the end of the file?
405
 
        # the current code says it's the last line of the weave?
 
406
        # XXX: which line of the weave should we really consider
 
407
        # matches the end of the file?  the current code says it's the
 
408
        # last line of the weave?
406
409
 
407
410
        from difflib import SequenceMatcher
408
411
        s = SequenceMatcher(None, basis_lines, lines)