Merge pull request #11 from ntrepid8/feature/add-sort-keys-3
add sort_keys
diff --git a/pytoml/writer.py b/pytoml/writer.py
index 055ab65..8915af6 100644
--- a/pytoml/writer.py
+++ b/pytoml/writer.py
@@ -6,9 +6,9 @@
unicode = str
-def dumps(obj):
+def dumps(obj, sort_keys=False):
fout = io.StringIO()
- dump(fout, obj)
+ dump(fout, obj, sort_keys=sort_keys)
return fout.getvalue()
@@ -82,10 +82,12 @@
raise RuntimeError(v)
-def dump(fout, obj):
+def dump(fout, obj, sort_keys=False):
tables = [((), obj, False)]
while tables:
+ if sort_keys:
+ tables.sort(key=lambda tup: tup[0], reverse=True)
name, table, is_array = tables.pop()
if name:
section_name = '.'.join(_escape_id(c) for c in name)
@@ -94,7 +96,8 @@
else:
fout.write('[{}]\n'.format(section_name))
- for k in table:
+ table_keys = sorted(table.keys()) if sort_keys else table.keys()
+ for k in table_keys:
v = table[k]
if isinstance(v, dict):
tables.append((name + (k,), v, False))