Mercurial > public > mercurial-scm > hg-stable
diff mercurial/templatekw.py @ 10055:e400a511e63a
cmdutil: extract repo dependent closures in templatekw
author | Patrick Mezard <pmezard@gmail.com> |
---|---|
date | Sun, 13 Dec 2009 18:06:23 +0100 |
parents | 1a85861f59af |
children | 1a114aca93fa |
line wrap: on
line diff
--- a/mercurial/templatekw.py Sun Dec 13 18:06:23 2009 +0100 +++ b/mercurial/templatekw.py Sun Dec 13 18:06:23 2009 +0100 @@ -5,7 +5,8 @@ # This software may be used and distributed according to the terms of the # GNU General Public License version 2, incorporated herein by reference. -import encoding +from node import hex +import encoding, patch, util def showlist(templ, name, values, plural=None, **args): '''expand set of values. @@ -68,37 +69,52 @@ if endname in templ: yield templ(endname, **args) -def showauthor(ctx, templ, **args): +def showauthor(repo, ctx, templ, **args): return ctx.user() -def showbranches(ctx, templ, **args): +def showbranches(repo, ctx, templ, **args): branch = ctx.branch() if branch != 'default': branch = encoding.tolocal(branch) return showlist(templ, 'branch', [branch], plural='branches', **args) -def showdate(ctx, templ, **args): +def showdate(repo, ctx, templ, **args): return ctx.date() -def showdescription(ctx, templ, **args): +def showdescription(repo, ctx, templ, **args): return ctx.description().strip() -def showextras(ctx, templ, **args): +def showdiffstat(repo, ctx, templ, **args): + diff = patch.diff(repo, ctx.parents()[0].node(), ctx.node()) + files, adds, removes = 0, 0, 0 + for i in patch.diffstatdata(util.iterlines(diff)): + files += 1 + adds += i[1] + removes += i[2] + return '%s: +%s/-%s' % (files, adds, removes) + +def showextras(repo, ctx, templ, **args): for key, value in sorted(ctx.extra().items()): args = args.copy() args.update(dict(key=key, value=value)) yield templ('extra', **args) -def showfiles(ctx, templ, **args): +def showfiles(repo, ctx, templ, **args): return showlist(templ, 'file', ctx.files(), **args) -def shownode(ctx, templ, **args): +def showmanifest(repo, ctx, templ, **args): + args = args.copy() + args.update(dict(rev=repo.manifest.rev(ctx.changeset()[0]), + node=hex(ctx.changeset()[0]))) + return templ('manifest', **args) + +def shownode(repo, ctx, templ, **args): return ctx.hex() -def showrev(ctx, templ, **args): +def showrev(repo, ctx, templ, **args): return ctx.rev() -def showtags(ctx, templ, **args): +def showtags(repo, ctx, templ, **args): return showlist(templ, 'tag', ctx.tags(), **args) keywords = { @@ -106,8 +122,10 @@ 'branches': showbranches, 'date': showdate, 'desc': showdescription, + 'diffstat': showdiffstat, 'extras': showextras, 'files': showfiles, + 'manifest': showmanifest, 'node': shownode, 'rev': showrev, 'tags': showtags,