package graphdb

import "sort"

type pathSorter struct {
	paths []string
	by    func(i, j string) bool
}

func sortByDepth(paths []string) {
	s := &pathSorter{paths, func(i, j string) bool {
		return PathDepth(i) > PathDepth(j)
	}}
	sort.Sort(s)
}

func (s *pathSorter) Len() int {
	return len(s.paths)
}

func (s *pathSorter) Swap(i, j int) {
	s.paths[i], s.paths[j] = s.paths[j], s.paths[i]
}

func (s *pathSorter) Less(i, j int) bool {
	return s.by(s.paths[i], s.paths[j])
}