flagutil.py
53 lines
| 1.5 KiB
| text/x-python
|
PythonLexer
r42954 | # flagutils.py - code to deal with revlog flags and their processors | |||
# | ||||
# Copyright 2016 Remi Chaintron <remi@fb.com> | ||||
# Copyright 2016-2019 Pierre-Yves David <pierre-yves.david@ens-lyon.org> | ||||
# | ||||
# This software may be used and distributed according to the terms of the | ||||
# GNU General Public License version 2 or any later version. | ||||
from __future__ import absolute_import | ||||
r42957 | from ..i18n import _ | |||
r42954 | from .constants import ( | |||
REVIDX_DEFAULT_FLAGS, | ||||
REVIDX_ELLIPSIS, | ||||
REVIDX_EXTSTORED, | ||||
REVIDX_FLAGS_ORDER, | ||||
REVIDX_ISCENSORED, | ||||
REVIDX_RAWTEXT_CHANGING_FLAGS, | ||||
) | ||||
r42956 | from .. import ( | |||
r42957 | error, | |||
r42956 | util | |||
) | ||||
r42954 | # blanked usage of all the name to prevent pyflakes constraints | |||
# We need these name available in the module for extensions. | ||||
REVIDX_ISCENSORED | ||||
REVIDX_ELLIPSIS | ||||
REVIDX_EXTSTORED | ||||
REVIDX_DEFAULT_FLAGS | ||||
REVIDX_FLAGS_ORDER | ||||
REVIDX_RAWTEXT_CHANGING_FLAGS | ||||
r42956 | REVIDX_KNOWN_FLAGS = util.bitsfrom(REVIDX_FLAGS_ORDER) | |||
r42955 | # Store flag processors (cf. 'addflagprocessor()' to register) | |||
flagprocessors = { | ||||
REVIDX_ISCENSORED: None, | ||||
} | ||||
r42954 | ||||
r42957 | 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 | ||||