Program for sorting space indented text, treating blocks indented to the same level as groups. This is useful for grouping items in a "to do" list.
II Animals 2 Dogs 3 Cats 1 Fish I Plants b Nettles c Oak a Grass
I Plants a Grass b Nettles c Oak II Animals 1 Fish 2 Dogs 3 Cats
Trees of grouped data can be of arbitrary depth.
$ ./treesorter.py -h usage: Sort trees [-h] [--SeparateTopLevel] [--InPlace] TreeFile positional arguments: TreeFile The file containing the tree. optional arguments: -h, --help show this help message and exit --SeparateTopLevel Separate top level trees with a blank line. --InPlace Write the output on top of the input file.
The input file might contain a few trees in no particular order:
$ cat fixtures/two-deep-with-gaps.txt 1 one i one iii one ii one 3 three iii three i three ii three 2 two ii two iii two i two
The tool reads the contents of the text file and prints out the trees in order.
$ ./treesorter.py fixtures/two-deep-with-gaps.txt 1 one i one ii one iii one 2 two i two ii two iii two 3 three i three ii three iii three
The --SeparateTopLevel puts a blank line between "top level" trees. This is useful for navigating between groups nimbly in vim.
$ ./treesorter.py fixtures/two-deep-with-gaps.txt --SeparateTopLevel 1 one i one ii one iii one 2 two i two ii two iii two 3 three i three ii three iii three
The --InPlace flag writes the sorted trees on top of the input file.
$ ./treesorter.py ~/docs/todo.txt --SeparateTopLevel --InPlace
In this case, the tool creates a back up file with the extension ".bak" first. Obviously, you've already got other back ups anyway. This is free software. I take no respobsibility for anything that happens to your files. See license.
This software is released under the terms of the MIT License.