diff --git a/slpp.py b/slpp.py index 3286e2a..6c28495 100644 --- a/slpp.py +++ b/slpp.py @@ -81,8 +81,7 @@ def __encode(self, obj): dp = tab * self.depth s += "%s{%s" % (tab * (self.depth - 2), newline) if isinstance(obj, dict): - key_list = ['[%s]' if isinstance(k, Number) else '["%s"]' for k in obj.keys()] - contents = [dp + (key + ' = %s') % (k, self.__encode(v)) for (k, v), key in zip(obj.items(), key_list)] + contents = [dp + ('[%s] = %s') % (self.__encode(k), self.__encode(v)) for (k, v) in obj.items()] s += (',%s' % newline).join(contents) else: s += (',%s' % newline).join( diff --git a/tests.py b/tests.py index fdd6055..202be5a 100755 --- a/tests.py +++ b/tests.py @@ -129,6 +129,9 @@ def test_table(self): # Mixed encode self.assertEqual(slpp.encode({'0': 0, 'name': 'john'}), '{\n\t["0"] = 0,\n\t["name"] = "john"\n}') + # Escape string keys + self.assertEqual(slpp.encode({'string with "quote"': 1}), '{\n\t["string with \\"quote\\""] = 1\n}') + def test_string(self): # Escape test: self.assertEqual(slpp.decode(r"'test\'s string'"), "test's string")