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')