1.1 --- a/modules.py Wed Dec 14 16:40:00 2016 +0100
1.2 +++ b/modules.py Wed Dec 14 17:22:07 2016 +0100
1.3 @@ -611,7 +611,7 @@
1.4 last_path = None
1.5 n = None
1.6 while line:
1.7 - path, value_type, value = self._get_fields(line, 3)
1.8 + path, value_type, encoding, value = self._get_fields(line, 4)
1.9 if path != last_path:
1.10 n = 0
1.11 last_path = path
1.12 @@ -619,15 +619,18 @@
1.13 n += 1
1.14 init_item(self.constants, path, dict)
1.15 value = eval(value)
1.16 - self.constants[path][(value, value_type)] = n
1.17 + encoding = encoding != "{}" and encoding or None
1.18 + self.constants[path][(value, value_type, encoding)] = n
1.19 line = f.readline().rstrip()
1.20
1.21 def _get_constant_values(self, f):
1.22 f.readline() # "constant values:"
1.23 line = f.readline().rstrip()
1.24 while line:
1.25 - name, value_type, value = self._get_fields(line, 3)
1.26 - self.constant_values[name] = eval(value), value_type
1.27 + name, value_type, encoding, value = self._get_fields(line, 4)
1.28 + value = eval(value)
1.29 + encoding = encoding != "{}" and encoding or None
1.30 + self.constant_values[name] = value, value_type, encoding
1.31 line = f.readline().rstrip()
1.32
1.33 # Generic parsing methods.
1.34 @@ -975,19 +978,19 @@
1.35 paths.sort()
1.36 for path in paths:
1.37 constants = []
1.38 - for (value, value_type), n in self.constants[path].items():
1.39 - constants.append((n, value_type, value))
1.40 + for (value, value_type, encoding), n in self.constants[path].items():
1.41 + constants.append((n, value_type, encoding, value))
1.42 constants.sort()
1.43 - for n, value_type, value in constants:
1.44 - print >>f, path, value_type, repr(value)
1.45 + for n, value_type, encoding, value in constants:
1.46 + print >>f, path, value_type, encoding or "{}", repr(value)
1.47
1.48 print >>f
1.49 print >>f, "constant values:"
1.50 names = self.constant_values.keys()
1.51 names.sort()
1.52 for name in names:
1.53 - value, value_type = self.constant_values[name]
1.54 - print >>f, name, value_type, repr(value)
1.55 + value, value_type, encoding = self.constant_values[name]
1.56 + print >>f, name, value_type, encoding or "{}", repr(value)
1.57
1.58 finally:
1.59 f.close()