Mercurial > hgrepos > Python > libs > ConfigMix
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: |
