Mercurial > hgrepos > Python > libs > ConfigMix
changeset 36:b04a350f894b
Implement methods to convert text to other types when getting configuration variables.
The conversion is done after variable substitutions.
| author | Franz Glasner <hg@dom66.de> |
|---|---|
| date | Thu, 31 Mar 2016 19:04:41 +0200 |
| parents | 3600e871c129 |
| children | 2a4dbbb42f43 |
| files | configmix/config.py |
| diffstat | 1 files changed, 40 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/configmix/config.py Mon Mar 21 13:49:31 2016 +0100 +++ b/configmix/config.py Thu Mar 31 19:04:41 2016 +0200 @@ -84,6 +84,46 @@ else: return default + def getintvar_s(self, varname, default=_MARKER): + """Get a (possibly substituted) variable and coerce text to a + number. + + """ + s = self.getvar_s(varname, default) + if isinstance(s, self._TEXTTYPE): + return int(s, 0) + else: + return s + + def getboolvar_s(self, varname, default=_MARKER): + """Get a (possibly substituted) variable and convert text to a + boolean + + """ + s = self.getvar_s(varname, default) + if isinstance(s, self._TEXTTYPE): + sl = s.strip().lower() + if not sl in self._BOOL_CVT: + raise ValueError("Not a boolean: %r" % s) + return self._BOOL_CVT[sl] + else: + return s + + # Conversion of booleans + _BOOL_CVT = {'1': True, 'yes': True, 'true': True, 'on': True, + '0': False, 'no': False, 'false': False, 'off': False} + + def getfloatvar_s(self, varname, default=_MARKER): + """Get a (possibly substituted) variable and convert text to a + float + + """ + s = self.getvar_s(varname, default) + if isinstance(s, self._TEXTTYPE): + return float(s) + else: + return s + def _split_ns(self, s): nameparts = s.split(':', 1) if len(nameparts) == 1:
