diff options
author | 2014-07-29 19:39:14 +0200 | |
---|---|---|
committer | 2014-07-29 19:39:14 +0200 | |
commit | 768b134a4a388bc11175c5ff8975369fe01317fe (patch) | |
tree | 53923fd07646e5895ed558a6cba8a616cce0aeaa | |
parent | roverlay/depres, slot rules: "wide match" (diff) | |
download | R_overlay-768b134a4a388bc11175c5ff8975369fe01317fe.tar.gz R_overlay-768b134a4a388bc11175c5ff8975369fe01317fe.tar.bz2 R_overlay-768b134a4a388bc11175c5ff8975369fe01317fe.zip |
roverlay/depres, rule constructor: accept bool value
The wide_match option accepts a boolean value now:
wide_match[=[1|y|yes|0|n|no|...]]
-rw-r--r-- | roverlay/depres/simpledeprule/rules.py | 10 | ||||
-rw-r--r-- | roverlay/strutil.py | 17 |
2 files changed, 24 insertions, 3 deletions
diff --git a/roverlay/depres/simpledeprule/rules.py b/roverlay/depres/simpledeprule/rules.py index df767ba..797ba98 100644 --- a/roverlay/depres/simpledeprule/rules.py +++ b/roverlay/depres/simpledeprule/rules.py @@ -21,14 +21,16 @@ __all__ = ( ) +import roverlay.strutil +import roverlay.depres.depenv + + from roverlay.depres.simpledeprule.util import \ RuleFileSyntaxError, get_slot_restrict, get_slot_parser from roverlay.depres.simpledeprule.abstractrules import \ SimpleRule, FuzzySimpleRule -import roverlay.depres.depenv - @@ -106,7 +108,9 @@ class RuleConstructor ( object ): if not has_value: kwargs ['allow_wide_match'] = True else: - raise NotImplementedError("wide_match value") + kwargs ['allow_wide_match'] = bool ( + roverlay.strutil.str_to_bool ( value ) + ) elif opt == '*': kwargs ['slot_operator'] = '*' diff --git a/roverlay/strutil.py b/roverlay/strutil.py index 9799477..76949fc 100644 --- a/roverlay/strutil.py +++ b/roverlay/strutil.py @@ -8,6 +8,7 @@ __all__ = [ 'ascii_filter', 'bytes_try_decode', 'fix_ebuild_name', 'pipe_lines', 'shorten_str', 'unquote', 'foreach_str', + 'str_to_bool', ] import re @@ -158,3 +159,19 @@ def foreach_str ( func, _str ): else: return [ func(str(s)) for s in _str ] # --- end of foreach_str (...) --- + +def str_to_bool ( s, empty_return=None, nofail=False ): + if not s: + return empty_return + + slow = s.lower() + + if slow in { 'y', 'yes', '1', 'true', 'enabled', 'on' }: + return True + elif slow in { 'n', 'no', '0', 'false', 'disabled', 'off' }: + return False + elif nofail: + return None + else: + raise ValueError(s) +# --- end of str_to_bool (...) --- |