20bb909c54
Moved more routes into the router generator. Renamed a few of the routes. Refactored the router generator. Fixed PreRoute. Began work on letting plugins plug into the template transpiler.
51 lines
1.1 KiB
Go
51 lines
1.1 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(lines ...string) *RouteGroup {
|
|
for _, line := range lines {
|
|
group.RunBefore = append(group.RunBefore, Runnable{line, false})
|
|
}
|
|
return group
|
|
}
|
|
|
|
func (group *RouteGroup) LitBefore(lines ...string) *RouteGroup {
|
|
for _, line := range lines {
|
|
group.RunBefore = append(group.RunBefore, Runnable{line, true})
|
|
}
|
|
return group
|
|
}
|
|
|
|
func (group *RouteGroup) Routes(routes ...*RouteImpl) *RouteGroup {
|
|
group.RouteList = append(group.RouteList, routes...)
|
|
return group
|
|
}
|