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, )