Mercurial > hgrepos > Python > libs > ConfigMix
comparison configmix/config.py @ 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 | 17af7a78710c |
| children | 8715e5cc59ac |
comparison
equal
deleted
inserted
replaced
| 35:3600e871c129 | 36:b04a350f894b |
|---|---|
| 81 except KeyError: | 81 except KeyError: |
| 82 if default is _MARKER: | 82 if default is _MARKER: |
| 83 raise | 83 raise |
| 84 else: | 84 else: |
| 85 return default | 85 return default |
| 86 | |
| 87 def getintvar_s(self, varname, default=_MARKER): | |
| 88 """Get a (possibly substituted) variable and coerce text to a | |
| 89 number. | |
| 90 | |
| 91 """ | |
| 92 s = self.getvar_s(varname, default) | |
| 93 if isinstance(s, self._TEXTTYPE): | |
| 94 return int(s, 0) | |
| 95 else: | |
| 96 return s | |
| 97 | |
| 98 def getboolvar_s(self, varname, default=_MARKER): | |
| 99 """Get a (possibly substituted) variable and convert text to a | |
| 100 boolean | |
| 101 | |
| 102 """ | |
| 103 s = self.getvar_s(varname, default) | |
| 104 if isinstance(s, self._TEXTTYPE): | |
| 105 sl = s.strip().lower() | |
| 106 if not sl in self._BOOL_CVT: | |
| 107 raise ValueError("Not a boolean: %r" % s) | |
| 108 return self._BOOL_CVT[sl] | |
| 109 else: | |
| 110 return s | |
| 111 | |
| 112 # Conversion of booleans | |
| 113 _BOOL_CVT = {'1': True, 'yes': True, 'true': True, 'on': True, | |
| 114 '0': False, 'no': False, 'false': False, 'off': False} | |
| 115 | |
| 116 def getfloatvar_s(self, varname, default=_MARKER): | |
| 117 """Get a (possibly substituted) variable and convert text to a | |
| 118 float | |
| 119 | |
| 120 """ | |
| 121 s = self.getvar_s(varname, default) | |
| 122 if isinstance(s, self._TEXTTYPE): | |
| 123 return float(s) | |
| 124 else: | |
| 125 return s | |
| 86 | 126 |
| 87 def _split_ns(self, s): | 127 def _split_ns(self, s): |
| 88 nameparts = s.split(':', 1) | 128 nameparts = s.split(':', 1) |
| 89 if len(nameparts) == 1: | 129 if len(nameparts) == 1: |
| 90 return (None, s, ) | 130 return (None, s, ) |
