mirror of
https://github.com/facebook/sapling.git
synced 2024-10-08 15:57:43 +03:00
templater: extract helper that evaluates filter or function argument
It will be used to get a date tuple from an argument. Perhaps some of "stringify(args[n][0], ...)" can be replaced by this function.
This commit is contained in:
parent
6a7c5c9f3d
commit
f54bea3c82
@ -215,6 +215,15 @@ def gettemplate(exp, context):
|
||||
return context._load(exp[1])
|
||||
raise error.ParseError(_("expected template specifier"))
|
||||
|
||||
def evalfuncarg(context, mapping, arg):
|
||||
func, data = arg
|
||||
# func() may return string, generator of strings or arbitrary object such
|
||||
# as date tuple, but filter does not want generator.
|
||||
thing = func(context, mapping, data)
|
||||
if isinstance(thing, types.GeneratorType):
|
||||
thing = stringify(thing)
|
||||
return thing
|
||||
|
||||
def runinteger(context, mapping, data):
|
||||
return int(data)
|
||||
|
||||
@ -259,11 +268,7 @@ def buildfilter(exp, context):
|
||||
|
||||
def runfilter(context, mapping, data):
|
||||
func, data, filt = data
|
||||
# func() may return string, generator of strings or arbitrary object such
|
||||
# as date tuple, but filter does not want generator.
|
||||
thing = func(context, mapping, data)
|
||||
if isinstance(thing, types.GeneratorType):
|
||||
thing = stringify(thing)
|
||||
thing = evalfuncarg(context, mapping, (func, data))
|
||||
try:
|
||||
return filt(thing)
|
||||
except (ValueError, AttributeError, TypeError):
|
||||
|
Loading…
Reference in New Issue
Block a user