diff mercurial/revlogutils/flagutil.py @ 42731:5109217a9ab6

flagutil: move insertflagprocessor to the new module (API)
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Thu, 08 Aug 2019 01:25:37 +0200
parents 92ac6b1697a7
children 6d61be152c55
line wrap: on
line diff
--- a/mercurial/revlogutils/flagutil.py	Thu Aug 08 01:28:34 2019 +0200
+++ b/mercurial/revlogutils/flagutil.py	Thu Aug 08 01:25:37 2019 +0200
@@ -8,6 +8,8 @@
 
 from __future__ import absolute_import
 
+from ..i18n import _
+
 from .constants import (
     REVIDX_DEFAULT_FLAGS,
     REVIDX_ELLIPSIS,
@@ -18,6 +20,7 @@
 )
 
 from .. import (
+    error,
     util
 )
 
@@ -37,3 +40,14 @@
     REVIDX_ISCENSORED: None,
 }
 
+def insertflagprocessor(flag, processor, flagprocessors):
+    if not flag & REVIDX_KNOWN_FLAGS:
+        msg = _("cannot register processor on unknown flag '%#x'.") % (flag)
+        raise error.ProgrammingError(msg)
+    if flag not in REVIDX_FLAGS_ORDER:
+        msg = _("flag '%#x' undefined in REVIDX_FLAGS_ORDER.") % (flag)
+        raise error.ProgrammingError(msg)
+    if flag in flagprocessors:
+        msg = _("cannot register multiple processors on flag '%#x'.") % (flag)
+        raise error.Abort(msg)
+    flagprocessors[flag] = processor