[PATCH 5 of 5 V3] revset: replace predicate by revsetpredicate of registrar
FUJIWARA Katsunori
foozy at lares.dti.ne.jp
Tue Mar 8 09:08:27 EST 2016
# HG changeset patch
# User FUJIWARA Katsunori <foozy at lares.dti.ne.jp>
# Date 1457445893 -32400
# Tue Mar 08 23:04:53 2016 +0900
# Node ID e66468a1adffedd602a098e48a527d387a05de3a
# Parent 757d7e1c69a80d27f0f8ab0ad7609a864cfe3120
revset: replace predicate by revsetpredicate of registrar
To make all built-in predicates be known to hggettext, loading
built-in predicates by loadpredicate() should be placed before fixing
i18nfunctions but after all of predicate decorating.
diff --git a/mercurial/revset.py b/mercurial/revset.py
--- a/mercurial/revset.py
+++ b/mercurial/revset.py
@@ -482,36 +482,7 @@ symbols = {}
# functions that just return a lot of changesets (like all) don't count here
safesymbols = set()
-class predicate(registrar.funcregistrar):
- """Decorator to register revset predicate
-
- Usage::
-
- @predicate('mypredicate(arg1, arg2[, arg3])')
- def mypredicatefunc(repo, subset, x):
- '''Explanation of this revset predicate ....
- '''
- pass
-
- The first string argument of the constructor is used also in
- online help.
-
- Use 'extpredicate' instead of this to register revset predicate in
- extensions.
- """
- table = symbols
- formatdoc = "``%s``\n %s"
- getname = registrar.funcregistrar.parsefuncdecl
-
- def __init__(self, decl, safe=False):
- """'safe' indicates whether a predicate is safe for DoS attack
- """
- super(predicate, self).__init__(decl)
- self.safe = safe
-
- def extraaction(self, name, func):
- if self.safe:
- safesymbols.add(name)
+predicate = registrar.revsetpredicate()
class extpredicate(registrar.delayregistrar):
"""Decorator to register revset predicate in extensions
@@ -3636,5 +3607,8 @@ def loadpredicate(ui, extname, registrar
if func._safe:
safesymbols.add(name)
+# load built-in predicates explicitly to setup safesymbols
+loadpredicate(None, None, predicate)
+
# tell hggettext to extract docstrings from these functions:
i18nfunctions = symbols.values()
More information about the Mercurial-devel
mailing list