gosora/router_gen/route_group.go

46 lines
1.0 KiB
Go

package main
type RouteGroup struct {
Path string
RouteList []*RouteImpl
RunBefore []Runnable
}
func newRouteGroup(path string, routes ...*RouteImpl) *RouteGroup {
return &RouteGroup{path, routes, []Runnable{}}
}
func (group *RouteGroup) Not(path ...string) *RouteSubset {
routes := make([]*RouteImpl, len(group.RouteList))
copy(routes, group.RouteList)
for i, route := range routes {
if inStringList(route.Path, path) {
routes = append(routes[:i], routes[i+1:]...)
}
}
return &RouteSubset{routes}
}
func inStringList(needle string, list []string) bool {
for _, item := range list {
if item == needle {
return true
}
}
return false
}
func (group *RouteGroup) Before(line string, literal ...bool) *RouteGroup {
var litItem bool
if len(literal) > 0 {
litItem = literal[0]
}
group.RunBefore = append(group.RunBefore, Runnable{line, litItem})
return group
}
func (group *RouteGroup) Routes(routes ...*RouteImpl) *RouteGroup {
group.RouteList = append(group.RouteList, routes...)
return group
}