diff options
| author | Petter Rasmussen | 2016-02-06 23:25:29 +0100 |
|---|---|---|
| committer | Petter Rasmussen | 2016-02-06 23:25:29 +0100 |
| commit | 0535cc04bc89943cd585f2f4d7f774ec1b8cc683 (patch) | |
| tree | 4e978e04e8ad059d439e7faaad9de486bdcc81f2 /cli/handler.go | |
| parent | a2bb1bb7868f5444119c17ce38102b7370411b87 (diff) | |
| download | gdrive-0535cc04bc89943cd585f2f4d7f774ec1b8cc683.tar.bz2 | |
Use FlagGroup instead of map
Diffstat (limited to 'cli/handler.go')
| -rw-r--r-- | cli/handler.go | 32 |
1 files changed, 27 insertions, 5 deletions
diff --git a/cli/handler.go b/cli/handler.go index d1d9d6b..b196f53 100644 --- a/cli/handler.go +++ b/cli/handler.go @@ -5,13 +5,35 @@ import ( "strings" ) -type Flags map[string][]Flag +func NewFlagGroup(name string, flags...Flag) FlagGroup { + return FlagGroup{ + Name: name, + Flags: flags, + } +} + +type FlagGroup struct { + Name string + Flags []Flag +} + +type FlagGroups []FlagGroup + +func (groups FlagGroups) getFlags(name string) []Flag { + for _, group := range groups { + if group.Name == name { + return group.Flags + } + } + + return nil +} var handlers []*Handler type Handler struct { Pattern string - Flags Flags + FlagGroups FlagGroups Callback func(Context) Description string } @@ -22,7 +44,7 @@ func (self *Handler) getParser() Parser { for _, pattern := range self.SplitPattern() { if isOptional(pattern) { name := optionalName(pattern) - parser := getFlagParser(self.Flags[name]) + parser := getFlagParser(self.FlagGroups.getFlags(name)) parsers = append(parsers, parser) } else if isCaptureGroup(pattern) { parsers = append(parsers, CaptureGroupParser{pattern}) @@ -50,10 +72,10 @@ func SetHandlers(h []*Handler) { handlers = h } -func AddHandler(pattern string, flags Flags, callback func(Context), desc string) { +func AddHandler(pattern string, groups FlagGroups, callback func(Context), desc string) { handlers = append(handlers, &Handler{ Pattern: pattern, - Flags: flags, + FlagGroups: groups, Callback: callback, Description: desc, }) |
