Mercurial > hg
changeset 25706:b7f53c474e2c
revset: port extra() to support keyword arguments
This is an example to show how keyword arguments are processed.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Sun, 28 Jun 2015 22:57:33 +0900 |
parents | 48919d246a47 |
children | 84518051bc3b |
files | mercurial/revset.py tests/test-revset.t |
diffstat | 2 files changed, 28 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/revset.py Sat Jun 27 17:25:01 2015 +0900 +++ b/mercurial/revset.py Sun Jun 28 22:57:33 2015 +0900 @@ -840,16 +840,19 @@ a regular expression. To match a value that actually starts with `re:`, use the prefix `literal:`. """ - - # i18n: "extra" is a keyword - l = getargs(x, 1, 2, _('extra takes at least 1 and at most 2 arguments')) + args = getkwargs(x, 'extra', 'label value') + if 'label' not in args: + # i18n: "extra" is a keyword + raise error.ParseError(_('extra takes at least 1 argument')) # i18n: "extra" is a keyword - label = getstring(l[0], _('first argument to extra must be a string')) + label = getstring(args['label'], _('first argument to extra must be ' + 'a string')) value = None - if len(l) > 1: + if 'value' in args: # i18n: "extra" is a keyword - value = getstring(l[1], _('second argument to extra must be a string')) + value = getstring(args['value'], _('second argument to extra must be ' + 'a string')) kind, value, matcher = _stringmatcher(value) def _matchvalue(r):
--- a/tests/test-revset.t Sat Jun 27 17:25:01 2015 +0900 +++ b/tests/test-revset.t Sun Jun 28 22:57:33 2015 +0900 @@ -324,6 +324,25 @@ keyword arguments + $ log 'extra(branch, value=a)' + 0 + + $ log 'extra(branch, a, b)' + hg: parse error: extra takes at most 2 arguments + [255] + $ log 'extra(a, label=b)' + hg: parse error: extra got multiple values for keyword argument 'label' + [255] + $ log 'extra(label=branch, default)' + hg: parse error: extra got an invalid argument + [255] + $ log 'extra(branch, foo+bar=baz)' + hg: parse error: extra got an invalid argument + [255] + $ log 'extra(unknown=branch)' + hg: parse error: extra got an unexpected keyword argument 'unknown' + [255] + $ try 'foo=bar|baz' (keyvalue ('symbol', 'foo')