mirror of
https://github.com/facebook/sapling.git
synced 2024-10-07 15:27:13 +03:00
revset: add 'takeorder' attribute to mark functions that need ordering flag
Since most functions shouldn't need 'order' flag, it is passed only when explicitly required. This avoids large API breakage.
This commit is contained in:
parent
a8ff6aeb43
commit
7706430a92
@ -108,6 +108,9 @@ class revsetpredicate(_funcregistrarbase):
|
||||
Optional argument 'safe' indicates whether a predicate is safe for
|
||||
DoS attack (False by default).
|
||||
|
||||
Optional argument 'takeorder' indicates whether a predicate function
|
||||
takes ordering policy as the last argument.
|
||||
|
||||
'revsetpredicate' instance in example above can be used to
|
||||
decorate multiple functions.
|
||||
|
||||
@ -120,8 +123,9 @@ class revsetpredicate(_funcregistrarbase):
|
||||
_getname = _funcregistrarbase._parsefuncdecl
|
||||
_docformat = "``%s``\n %s"
|
||||
|
||||
def _extrasetup(self, name, func, safe=False):
|
||||
def _extrasetup(self, name, func, safe=False, takeorder=False):
|
||||
func._safe = safe
|
||||
func._takeorder = takeorder
|
||||
|
||||
class filesetpredicate(_funcregistrarbase):
|
||||
"""Decorator to register fileset predicate
|
||||
|
@ -422,7 +422,10 @@ def keyvaluepair(repo, subset, k, v):
|
||||
def func(repo, subset, a, b, order):
|
||||
f = getsymbol(a)
|
||||
if f in symbols:
|
||||
return symbols[f](repo, subset, b)
|
||||
fn = symbols[f]
|
||||
if getattr(fn, '_takeorder', False):
|
||||
return fn(repo, subset, b, order)
|
||||
return fn(repo, subset, b)
|
||||
|
||||
keep = lambda fn: getattr(fn, '__doc__', None) is not None
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user