mercurial/templater.py
changeset 36607 c6061cadb400
parent 36596 b5d39a09656a
child 36647 052351e3e1cd
equal deleted inserted replaced
36606:4de15c54e59f 36607:c6061cadb400
    27     scmutil,
    27     scmutil,
    28     templatefilters,
    28     templatefilters,
    29     templatekw,
    29     templatekw,
    30     util,
    30     util,
    31 )
    31 )
       
    32 from .utils import dateutil
    32 
    33 
    33 class ResourceUnavailable(error.Abort):
    34 class ResourceUnavailable(error.Abort):
    34     pass
    35     pass
    35 
    36 
    36 class TemplateNotFound(error.Abort):
    37 class TemplateNotFound(error.Abort):
   647     fmt = None
   648     fmt = None
   648     if len(args) == 2:
   649     if len(args) == 2:
   649         fmt = evalstring(context, mapping, args[1])
   650         fmt = evalstring(context, mapping, args[1])
   650     try:
   651     try:
   651         if fmt is None:
   652         if fmt is None:
   652             return util.datestr(date)
   653             return dateutil.datestr(date)
   653         else:
   654         else:
   654             return util.datestr(date, fmt)
   655             return dateutil.datestr(date, fmt)
   655     except (TypeError, ValueError):
   656     except (TypeError, ValueError):
   656         # i18n: "date" is a keyword
   657         # i18n: "date" is a keyword
   657         raise error.ParseError(_("date expects a date information"))
   658         raise error.ParseError(_("date expects a date information"))
   658 
   659 
   659 @templatefunc('dict([[key=]value...])', argspec='*args **kwargs')
   660 @templatefunc('dict([[key=]value...])', argspec='*args **kwargs')
   952         # i18n: "localdate" is a keyword
   953         # i18n: "localdate" is a keyword
   953         raise error.ParseError(_("localdate expects one or two arguments"))
   954         raise error.ParseError(_("localdate expects one or two arguments"))
   954 
   955 
   955     date = evalfuncarg(context, mapping, args[0])
   956     date = evalfuncarg(context, mapping, args[0])
   956     try:
   957     try:
   957         date = util.parsedate(date)
   958         date = dateutil.parsedate(date)
   958     except AttributeError:  # not str nor date tuple
   959     except AttributeError:  # not str nor date tuple
   959         # i18n: "localdate" is a keyword
   960         # i18n: "localdate" is a keyword
   960         raise error.ParseError(_("localdate expects a date information"))
   961         raise error.ParseError(_("localdate expects a date information"))
   961     if len(args) >= 2:
   962     if len(args) >= 2:
   962         tzoffset = None
   963         tzoffset = None
   963         tz = evalfuncarg(context, mapping, args[1])
   964         tz = evalfuncarg(context, mapping, args[1])
   964         if isinstance(tz, bytes):
   965         if isinstance(tz, bytes):
   965             tzoffset, remainder = util.parsetimezone(tz)
   966             tzoffset, remainder = dateutil.parsetimezone(tz)
   966             if remainder:
   967             if remainder:
   967                 tzoffset = None
   968                 tzoffset = None
   968         if tzoffset is None:
   969         if tzoffset is None:
   969             try:
   970             try:
   970                 tzoffset = int(tz)
   971                 tzoffset = int(tz)
   971             except (TypeError, ValueError):
   972             except (TypeError, ValueError):
   972                 # i18n: "localdate" is a keyword
   973                 # i18n: "localdate" is a keyword
   973                 raise error.ParseError(_("localdate expects a timezone"))
   974                 raise error.ParseError(_("localdate expects a timezone"))
   974     else:
   975     else:
   975         tzoffset = util.makedate()[1]
   976         tzoffset = dateutil.makedate()[1]
   976     return (date[0], tzoffset)
   977     return (date[0], tzoffset)
   977 
   978 
   978 @templatefunc('max(iterable)')
   979 @templatefunc('max(iterable)')
   979 def max_(context, mapping, args, **kwargs):
   980 def max_(context, mapping, args, **kwargs):
   980     """Return the max of an iterable"""
   981     """Return the max of an iterable"""