[PATCH 3 of 4 V2] templater: introduce word function
Pierre-Yves David
pierre-yves.david at ens-lyon.org
Tue Jul 1 06:43:04 CDT 2014
On 06/30/2014 10:16 AM, Ryan McElroy wrote:
> # HG changeset patch
> # User Ryan McElroy <rmcelroy at fb.com>
> # Date 1402621343 25200
> # Thu Jun 12 18:02:23 2014 -0700
> # Node ID ef4d286cea6073a99bc1b6196dc35627ee89ad8e
> # Parent 761db1c368e2765cb485789eb4d237dad32c76c4
> templater: introduce word function
I've pushed 1-2 and 4. But I've some feedback on this one that could
justify a V3.
(queued)
>
> This function allows returning only the nth "word" from a string. By default
> a string is split as by Python's split() function default, but an optional
> third parameter can also override what string the string is split by.
>
> diff -r 761db1c368e2 -r ef4d286cea60 mercurial/help/templates.txt
> --- a/mercurial/help/templates.txt Thu Jun 12 17:53:37 2014 -0700
> +++ b/mercurial/help/templates.txt Thu Jun 12 18:02:23 2014 -0700
> @@ -72,6 +72,8 @@
>
> - sub(pat, repl, expr)
>
> +- word(number, text[, separator])
> +
> Also, for any expression that returns a list, there is a list operator:
>
> - expr % "{template}"
> @@ -130,3 +132,7 @@
> - Show only commit descriptions that start with "template"::
>
> $ hg log --template "{startswith(\"template\", firstline(desc))}\n"
> +
> +- Print the first word of each line of a commit message::
> +
> + $ hg log --template "{word(\"0\", desc)}\n"
> diff -r 761db1c368e2 -r ef4d286cea60 mercurial/templater.py
> --- a/mercurial/templater.py Thu Jun 12 17:53:37 2014 -0700
> +++ b/mercurial/templater.py Thu Jun 12 18:02:23 2014 -0700
> @@ -477,6 +477,24 @@
> return ''
>
>
> +def word(context, mapping, args):
> + """return nth word from a string"""
> + if len(args) != 2 and len(args) != 3:
(small nit) Could be `if len(args) not in (2, 3):` or `if not 2 <=
len(args) <= 3:`
> + raise error.ParseError(_("word expects two or three arguments"))
We could adds "(got %i)" in this message to help people spotting the error.
The error message does not seems tested.
--
Pierre-Yves David
More information about the Mercurial-devel
mailing list