mirror of
https://github.com/octoleo/restic.git
synced 2024-11-22 21:05:10 +00:00
Allow sorting nodes in trees
This commit is contained in:
parent
a4577769ae
commit
3f6e11d26e
@ -53,6 +53,13 @@ type Node struct {
|
||||
Path string `json:"-"`
|
||||
}
|
||||
|
||||
// Nodes is a slice of nodes that can be sorted.
|
||||
type Nodes []*Node
|
||||
|
||||
func (n Nodes) Len() int { return len(n) }
|
||||
func (n Nodes) Less(i, j int) bool { return n[i].Name < n[j].Name }
|
||||
func (n Nodes) Swap(i, j int) { n[i], n[j] = n[j], n[i] }
|
||||
|
||||
func (node Node) String() string {
|
||||
switch node.Type {
|
||||
case "file":
|
||||
|
@ -71,6 +71,13 @@ func (t Tree) binarySearch(name string) (int, *Node, error) {
|
||||
return pos, nil, errors.New("named node not found")
|
||||
}
|
||||
|
||||
// Sort sorts the nodes by name.
|
||||
func (t *Tree) Sort() {
|
||||
list := Nodes(t.Nodes)
|
||||
sort.Sort(list)
|
||||
t.Nodes = list
|
||||
}
|
||||
|
||||
// Subtrees returns a slice of all subtree IDs of the tree.
|
||||
func (t Tree) Subtrees() (trees IDs) {
|
||||
for _, node := range t.Nodes {
|
||||
|
Loading…
Reference in New Issue
Block a user