Keep object keys in parsing order in tostream output

As noted by @nicowilliams, `tostream` used `keys`,
which sorts the keys in alphabetical order, instead
of `keys_unsorted`, which preserves the parsing order.

Fixes #1541.
This commit is contained in:
Eric Bréchemier authored and Nico Williams committed 2017-11-29 11:46:08 -06:00
1 parent 239278fd3a
commit 476b36770d
2 files changed
+2 -1

No files matched your search

+1
View File
@@ -24,6 +24,7 @@ David R. MacIver <david@drmaciver.com> - bug fixes
David Tolnay <dtolnay@gmail.com> - destructuring, build improvements David Tolnay <dtolnay@gmail.com> - destructuring, build improvements
Doug Luce <doug@github.con.com> - build Doug Luce <doug@github.con.com> - build
Eiichi Sato <sato.eiichi@gmail.com> Eiichi Sato <sato.eiichi@gmail.com>
Eric Bréchemier <eric@egull.co> - bug fix
Filippo Giunchedi <fgiunchedi@gmail.com> - bug fixes Filippo Giunchedi <fgiunchedi@gmail.com> - bug fixes
Filippo Valsorda <filippo.valsorda@gmail.com> - recursive object merge (`*`) Filippo Valsorda <filippo.valsorda@gmail.com> - recursive object merge (`*`)
Hanfei Shen <qqshfox@gmail.com> Hanfei Shen <qqshfox@gmail.com>
+1 -1
View File
@@ -237,7 +237,7 @@ def tostream:
else else
# We really need a _streaming_ form of `keys`. # We really need a _streaming_ form of `keys`.
# We can use `range` for arrays, but not for objects. # We can use `range` for arrays, but not for objects.
keys as $keys | keys_unsorted as $keys |
$keys[-1] as $last| $keys[-1] as $last|
((# for each key ((# for each key
$keys[] | . as $key | $keys[] | . as $key |