# HG changeset patch # User Yuya Nishihara # Date 1521356302 -32400 # Node ID e70a90a72b8065557b8e3c433ca99f107ad26fc4 # Parent 67efce231633d0715001b26075ce61c239105197 templatefuncs: use evaldate() where seems appropriate This means date("today") is allowed. Also fixes evaldate() to forcibly use the custom error message if specified. diff -r 67efce231633 -r e70a90a72b80 mercurial/templatefuncs.py --- a/mercurial/templatefuncs.py Sun Mar 18 15:55:31 2018 +0900 +++ b/mercurial/templatefuncs.py Sun Mar 18 15:58:22 2018 +0900 @@ -52,18 +52,16 @@ # i18n: "date" is a keyword raise error.ParseError(_("date expects one or two arguments")) - date = evalfuncarg(context, mapping, args[0]) + date = evaldate(context, mapping, args[0], + # i18n: "date" is a keyword + _("date expects a date information")) fmt = None if len(args) == 2: fmt = evalstring(context, mapping, args[1]) - try: - if fmt is None: - return dateutil.datestr(date) - else: - return dateutil.datestr(date, fmt) - except (TypeError, ValueError): - # i18n: "date" is a keyword - raise error.ParseError(_("date expects a date information")) + if fmt is None: + return dateutil.datestr(date) + else: + return dateutil.datestr(date, fmt) @templatefunc('dict([[key=]value...])', argspec='*args **kwargs') def dict_(context, mapping, args): diff -r 67efce231633 -r e70a90a72b80 mercurial/templateutil.py --- a/mercurial/templateutil.py Sun Mar 18 15:55:31 2018 +0900 +++ b/mercurial/templateutil.py Sun Mar 18 15:58:22 2018 +0900 @@ -330,6 +330,10 @@ return dateutil.parsedate(thing) except AttributeError: raise error.ParseError(err or _('not a date tuple nor a string')) + except error.ParseError: + if not err: + raise + raise error.ParseError(err) def evalinteger(context, mapping, arg, err=None): return unwrapinteger(evalrawexp(context, mapping, arg), err)