vinegar/servlet/templateRoute.go
2022-08-03 11:08:25 -04:00

39 lines
1.0 KiB
Go

package servlet
import (
"net/http"
"strings"
)
type (
TemplateRoute struct {
*VinegarRoute
srv *VinegarServlet
fileRoot string
TemplateManager *TemplateManager
UseCache bool
}
TemplateRouteHandlerFunc func(w http.ResponseWriter, r *http.Request, tm *TemplateManager)
)
func NewTemplateRoute(servlet *VinegarServlet, urlPattern string, templatePath string, componentPath string, handler TemplateRouteHandlerFunc) *TemplateRoute {
defaultPrune := strings.Replace(urlPattern, ".*", "", -1)
tm := NewTemplateManager(templatePath, componentPath)
rootRoute := NewServletRoute(defaultPrune, createTemplateRouteFunction(tm, handler))
route := TemplateRoute{
VinegarRoute: rootRoute,
srv: servlet,
fileRoot: "",
TemplateManager: tm,
UseCache: false,
}
return &route
}
func createTemplateRouteFunction(tm *TemplateManager, handler TemplateRouteHandlerFunc) VinegarHandlerFunction {
fun := func(w http.ResponseWriter, r *http.Request) {
handler(w, r, tm)
}
return fun
}