Categories as slice, not a map anymore, order is always preserved

This commit is contained in:
Soulou
2015-08-21 10:58:14 +02:00
committed by Jesse Szwedko
parent a0801792cc
commit 994a7028e2
3 changed files with 37 additions and 5 deletions

30
category.go Normal file
View File

@@ -0,0 +1,30 @@
package cli
type CommandCategories []*CommandCategory
type CommandCategory struct {
Name string
Commands Commands
}
func (c CommandCategories) Less(i, j int) bool {
return c[i].Name < c[j].Name
}
func (c CommandCategories) Len() int {
return len(c)
}
func (c CommandCategories) Swap(i, j int) {
c[i], c[j] = c[j], c[i]
}
func (c CommandCategories) AddCommand(category string, command Command) CommandCategories {
for _, commandCategory := range c {
if commandCategory.Name == category {
commandCategory.Commands = append(commandCategory.Commands, command)
return c
}
}
return append(c, &CommandCategory{Name: category, Commands: []Command{command}})
}