comparison mercurial/revset.py @ 28707:af5f90f23515

revset: inline isvalidfunc(), getfuncname() and getfuncargs() See the previous commit for why. These functions are also trivial.
author Yuya Nishihara <yuya@tcha.org>
date Mon, 29 Feb 2016 16:35:58 +0900
parents b33ca687c1e3
children ab06b5ef93f7
comparison
equal deleted inserted replaced
28706:b33ca687c1e3 28707:af5f90f23515
330 330
331 def getargsdict(x, funcname, keys): 331 def getargsdict(x, funcname, keys):
332 return parser.buildargsdict(getlist(x), funcname, keys.split(), 332 return parser.buildargsdict(getlist(x), funcname, keys.split(),
333 keyvaluenode='keyvalue', keynode='symbol') 333 keyvaluenode='keyvalue', keynode='symbol')
334 334
335 def isvalidfunc(tree):
336 """Examine whether specified ``tree`` is valid ``func`` or not
337 """
338 return tree[0] == 'func' and tree[1][0] == 'symbol'
339
340 def getfuncname(tree):
341 """Get function name from valid ``func`` in ``tree``
342
343 This assumes that ``tree`` is already examined by ``isvalidfunc``.
344 """
345 return tree[1][1]
346
347 def getfuncargs(tree):
348 """Get list of function arguments from valid ``func`` in ``tree``
349
350 This assumes that ``tree`` is already examined by ``isvalidfunc``.
351 """
352 return getlist(tree[2])
353
354 def getset(repo, subset, x): 335 def getset(repo, subset, x):
355 if not x: 336 if not x:
356 raise error.ParseError(_("missing argument")) 337 raise error.ParseError(_("missing argument"))
357 s = methods[x[0]](repo, subset, *x[1:]) 338 s = methods[x[0]](repo, subset, *x[1:])
358 if util.safehasattr(s, 'isascending'): 339 if util.safehasattr(s, 'isascending'):
2312 name = tree[1] 2293 name = tree[1]
2313 if name.startswith('$'): 2294 if name.startswith('$'):
2314 return (decl, None, None, _("'$' not for alias arguments")) 2295 return (decl, None, None, _("'$' not for alias arguments"))
2315 return (name, ('symbol', name), None, None) 2296 return (name, ('symbol', name), None, None)
2316 2297
2317 if isvalidfunc(tree): 2298 if tree[0] == 'func' and tree[1][0] == 'symbol':
2318 # "name(arg, ....) = ...." style 2299 # "name(arg, ....) = ...." style
2319 name = getfuncname(tree) 2300 name = tree[1][1]
2320 if name.startswith('$'): 2301 if name.startswith('$'):
2321 return (decl, None, None, _("'$' not for alias arguments")) 2302 return (decl, None, None, _("'$' not for alias arguments"))
2322 args = [] 2303 args = []
2323 for arg in getfuncargs(tree): 2304 for arg in getlist(tree[2]):
2324 if arg[0] != 'symbol': 2305 if arg[0] != 'symbol':
2325 return (decl, None, None, _("invalid argument list")) 2306 return (decl, None, None, _("invalid argument list"))
2326 args.append(arg[1]) 2307 args.append(arg[1])
2327 if len(args) != len(set(args)): 2308 if len(args) != len(set(args)):
2328 return (name, None, None, 2309 return (name, None, None,