Returns a copy of the indicated treelike object with the keys sorted. The sort is performed with the default lexicographic Unicode sort order provided by JavaScript’s Array.sort() method.
$ cat capitals.yaml
Japan: Tokyo
Turkey: Ankara
Australia: Canberra
Spain: Madrid
$ ori Tree.sort capitals.yaml
Australia: Canberra
Japan: Tokyo
Spain: Madrid
Turkey: Ankara
Options #
The sort built-in takes an optional options argument. This can take the form of an object containing any or all of:
compare. A function that compares two arguments. This uses the same definition as the JavaScript Array sort() method. If omitted, items are converted to strings and sorted as strings.sortKey. A function evaluated for each entry in the tree to determine a sort key. See below.
The default compare function sorts text strings by their Unicode character values. If you are sorting things for display to end users, consider using naturalOrder as the compare function.
As a shorthand, if you supply a function as the second argument to sort, it will be used as the sortKey function.
To reverse the sort order, apply sort and then reverse.
Sort keys #
As shown in the example above, by default sort sorts a tree by its keys. You can supply a sortKey option that returns a different value that the tree should be sorted by. This function will be called with three arguments: the value being considered, the key for that value, and the tree being sorted. You don’t have to use all three arguments.
$ cat capitals.yaml
Japan: Tokyo
Turkey: Ankara
Australia: Canberra
Spain: Madrid
$ ori "Tree.sort capitals.yaml, (value, key, tree) => value"
Turkey: Ankara
Australia: Canberra
Spain: Madrid
Japan: Tokyo