Nice! Could I suggest that the Less implementation is exported independently so that it can be used in other sort.Interface implementations (for example if we wanted to sort a slice of structs by a naturally-sorted key)?
Perhaps call it StringCompareNatural and make it the same signature as strings.Compare? On 22 June 2016 at 11:35, Menno Smits <[email protected]> wrote: > Hi everyone, > > Earlier this week I needed to be able sort a slice containing unit names and > machine ids in a way that would make sense to a human. For example, a > conventional string sort would order a list of machine ids like this: > > 0 > 10 > 3 > 3/lxd/1 > 3/lxd/10 > 3/lxd/11 > 3/lxd/2 > 4 > > when what I really wanted was: > > 0 > 3 > 3/lxd/1 > 3/lxd/2 > 3/lxd/10 > 3/lxd/11 > 4 > 10 > > Tim pointed me at something that Anastasia had already done for formatting > the output from some Juju CLI commands. This was close so I extracted it to > github.com/juju/utils and generalised it. An in-place sort can be performed > like this: > > utils.SortStringsNaturally(someSliceOfStrings) > > The implementation is here: > > https://github.com/juju/utils/blob/master/naturalsort.go > https://github.com/juju/utils/blob/master/naturalsort_test.go > > Consider using it if your code needs to sort machine ids, unit names, tag > strings, IP addresses and any other slice of strings which contain sections > of digits. > > - Menno > > > > > -- > Juju-dev mailing list > [email protected] > Modify settings or unsubscribe at: > https://lists.ubuntu.com/mailman/listinfo/juju-dev > -- Juju-dev mailing list [email protected] Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/juju-dev
