Mercurial > public > mercurial-scm > hg-stable
diff mercurial/templater.py @ 26485:43bf9471fae9
templater: introduce {latesttag()} function to match a pattern (issue4184)
This allows the latest class of tag to be found, such as a release candidate or
final build, instead of just the absolute latest.
It doesn't appear that the existing keyword can be given an optional argument.
There is a keyword, function and filter for 'date', so it doesn't seem harmful
to introduce a new function with the same name as an existing keyword. Most
functions are pretty Mercurial agnostic, but there is {revset()} as precedent.
Even though templatekw.getlatesttags() returns a single tuple, one entry of
which is a list, it is simplest to present this as a list of tags instead of a
single item, with each tag having a distance and change count attribute. It is
also closer to how {latesttag} returns a list of tags, and how this function
works when not given a '%' operator.
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Sun, 23 Aug 2015 23:44:58 -0400 |
parents | 0a5a774f5956 |
children | 875e5d89dc86 |
line wrap: on
line diff
--- a/mercurial/templater.py Mon Aug 24 23:07:00 2015 -0400 +++ b/mercurial/templater.py Sun Aug 23 23:44:58 2015 -0400 @@ -512,6 +512,19 @@ # ignore args[0] (the label string) since this is supposed to be a a no-op yield args[1][0](context, mapping, args[1][1]) +def latesttag(context, mapping, args): + """:latesttag([pattern]): The global tags matching the given pattern on the + most recent globally tagged ancestor of this changeset.""" + if len(args) > 1: + # i18n: "latesttag" is a keyword + raise error.ParseError(_("latesttag expects at most one argument")) + + pattern = None + if len(args) == 1: + pattern = stringify(args[0][0](context, mapping, args[0][1])) + + return templatekw.showlatesttags(pattern, **mapping) + def localdate(context, mapping, args): """:localdate(date[, tz]): Converts a date to the specified timezone. The default is local date.""" @@ -733,6 +746,7 @@ "indent": indent, "join": join, "label": label, + "latesttag": latesttag, "localdate": localdate, "pad": pad, "revset": revset,