Mercurial > hg > mercurial-crew-with-dirclash
comparison mercurial/commands.py @ 1909:37b9f80a5fbb
add doc comments to template code.
author | Vadim Gelfer <vadim.gelfer@gmail.com> |
---|---|
date | Mon, 27 Feb 2006 15:07:25 -0800 |
parents | be71c04d62c0 |
children | e2fe1953f417 |
comparison
equal
deleted
inserted
replaced
1908:be71c04d62c0 | 1909:37b9f80a5fbb |
---|---|
336 if user is None: | 336 if user is None: |
337 user = revcache[rev] = ui.shortuser(name) | 337 user = revcache[rev] = ui.shortuser(name) |
338 return user | 338 return user |
339 | 339 |
340 class changeset_templater(object): | 340 class changeset_templater(object): |
341 '''use templater module to format changeset information.''' | |
342 | |
341 def __init__(self, ui, repo, mapfile): | 343 def __init__(self, ui, repo, mapfile): |
342 self.t = templater.templater(mapfile, templater.common_filters) | 344 self.t = templater.templater(mapfile, templater.common_filters) |
343 self.ui = ui | 345 self.ui = ui |
344 self.repo = repo | 346 self.repo = repo |
345 | 347 |
346 def use_template(self, t): | 348 def use_template(self, t): |
349 '''set template string to use''' | |
347 self.t.cache['template'] = t | 350 self.t.cache['template'] = t |
348 | 351 |
349 def write(self, thing): | 352 def write(self, thing): |
353 '''write expanded template. | |
354 uses in-order recursive traverse of iterators.''' | |
350 for t in thing: | 355 for t in thing: |
351 if hasattr(t, '__iter__'): | 356 if hasattr(t, '__iter__'): |
352 self.write(t) | 357 self.write(t) |
353 else: | 358 else: |
354 self.ui.write(t) | 359 self.ui.write(t) |
355 | 360 |
356 def show(self, rev=0, changenode=None, brinfo=None): | 361 def show(self, rev=0, changenode=None, brinfo=None): |
357 """show a single changeset or file revision""" | 362 '''show a single changeset or file revision''' |
358 log = self.repo.changelog | 363 log = self.repo.changelog |
359 if changenode is None: | 364 if changenode is None: |
360 changenode = log.node(rev) | 365 changenode = log.node(rev) |
361 elif not rev: | 366 elif not rev: |
362 rev = log.rev(changenode) | 367 rev = log.rev(changenode) |
363 | 368 |
364 changes = log.read(changenode) | 369 changes = log.read(changenode) |
365 | 370 |
366 def showlist(name, values, plural=None, **args): | 371 def showlist(name, values, plural=None, **args): |
372 '''expand set of values. | |
373 name is name of key in template map. | |
374 values is list of strings or dicts. | |
375 plural is plural of name, if not simply name + 's'. | |
376 | |
377 expansion works like this, given name 'foo'. | |
378 | |
379 if values is empty, expand 'no_foos'. | |
380 | |
381 if 'foo' not in template map, return values as a string, | |
382 joined by space. | |
383 | |
384 expand 'start_foos'. | |
385 | |
386 for each value, expand 'foo'. if 'last_foo' in template | |
387 map, expand it instead of 'foo' for last key. | |
388 | |
389 expand 'end_foos'. | |
390 ''' | |
367 if plural: names = plural | 391 if plural: names = plural |
368 else: names = name + 's' | 392 else: names = name + 's' |
369 if not values: | 393 if not values: |
370 noname = 'no_' + names | 394 noname = 'no_' + names |
371 if noname in self.t: | 395 if noname in self.t: |
372 yield self.t(noname, **args) | 396 yield self.t(noname, **args) |
373 return | 397 return |
374 vargs = args.copy() | |
375 if name not in self.t: | 398 if name not in self.t: |
376 yield ' '.join(values) | 399 yield ' '.join(values) |
377 return | 400 return |
378 startname = 'start_' + names | 401 startname = 'start_' + names |
379 if startname in self.t: | 402 if startname in self.t: |
380 yield self.t(startname, **args) | 403 yield self.t(startname, **args) |
404 vargs = args.copy() | |
381 def one(v, tag=name): | 405 def one(v, tag=name): |
382 try: | 406 try: |
383 vargs.update(v) | 407 vargs.update(v) |
384 except ValueError: | 408 except ValueError: |
385 vargs.update([(name, v)]) | 409 vargs.update([(name, v)]) |
462 inst.args[0])) | 486 inst.args[0])) |
463 except SyntaxError, inst: | 487 except SyntaxError, inst: |
464 raise util.Abort(_('%s: %s') % (self.t.mapfile, inst.args[0])) | 488 raise util.Abort(_('%s: %s') % (self.t.mapfile, inst.args[0])) |
465 | 489 |
466 class changeset_printer(object): | 490 class changeset_printer(object): |
491 '''show changeset information when templating not requested.''' | |
492 | |
467 def __init__(self, ui, repo): | 493 def __init__(self, ui, repo): |
468 self.ui = ui | 494 self.ui = ui |
469 self.repo = repo | 495 self.repo = repo |
470 | 496 |
471 def show(self, rev=0, changenode=None, brinfo=None): | 497 def show(self, rev=0, changenode=None, brinfo=None): |
472 """show a single changeset or file revision""" | 498 '''show a single changeset or file revision''' |
473 log = self.repo.changelog | 499 log = self.repo.changelog |
474 if changenode is None: | 500 if changenode is None: |
475 changenode = log.node(rev) | 501 changenode = log.node(rev) |
476 elif not rev: | 502 elif not rev: |
477 rev = log.rev(changenode) | 503 rev = log.rev(changenode) |
528 self.ui.status(_("summary: %s\n") % | 554 self.ui.status(_("summary: %s\n") % |
529 description.splitlines()[0]) | 555 description.splitlines()[0]) |
530 self.ui.status("\n") | 556 self.ui.status("\n") |
531 | 557 |
532 def show_changeset(ui, repo, opts): | 558 def show_changeset(ui, repo, opts): |
559 '''show one changeset. uses template or regular display. caller | |
560 can pass in 'map_file' and 'template' options in opts.''' | |
561 | |
533 tmpl = opts.get('template') | 562 tmpl = opts.get('template') |
534 if tmpl: | 563 if tmpl: |
535 tmpl = templater.parsestring(tmpl, quoted=False) | 564 tmpl = templater.parsestring(tmpl, quoted=False) |
536 else: | 565 else: |
537 tmpl = ui.config('ui', 'logtemplate') | 566 tmpl = ui.config('ui', 'logtemplate') |