comparison configmix/config.py @ 23:c77cb6bc8eeb

FIX: Handle non-str types in variable substitutions properly
author Franz Glasner <f.glasner@feldmann-mg.com>
date Thu, 10 Mar 2016 15:41:46 +0100
parents a04fa81e10ae
children fa65adab0b71
comparison
equal deleted inserted replaced
22:6a91db2c2469 23:c77cb6bc8eeb
152 end = s.find(self._ENDTOK, start) 152 end = s.find(self._ENDTOK, start)
153 if end < 0: 153 if end < 0:
154 return s 154 return s
155 varname, filters = self._split_filters(s[start+2:end]) 155 varname, filters = self._split_filters(s[start+2:end])
156 varvalue = self._apply_filters(filters, self.getvar_s(varname)) 156 varvalue = self._apply_filters(filters, self.getvar_s(varname))
157 s = u(b"{0}{1}{2}").format(s[:start], varvalue, s[end+2:]) 157 replaced = u(b"{0}{1}").format(s[:start], varvalue)
158 s = u(b"{0}{1}").format(replaced, s[end+2:])
158 # don't re-evaluate because `self.getvar_s()` expands already 159 # don't re-evaluate because `self.getvar_s()` expands already
159 start = s.find(self._STARTTOK, start + len(varvalue)) 160 start = s.find(self._STARTTOK, len(replaced))
160 return s 161 return s
161 162
162 def _apply_filters(self, filters, value): 163 def _apply_filters(self, filters, value):
163 for name in filters: 164 for name in filters:
164 try: 165 try: