39 lines
1.0 KiB
Go
39 lines
1.0 KiB
Go
package servlet
|
|
|
|
import (
|
|
"net/http"
|
|
"strings"
|
|
)
|
|
|
|
type (
|
|
TemplateRoute struct {
|
|
*VinegarWebRoute
|
|
srv *VinegarHttpServlet
|
|
fileRoot string
|
|
TemplateManager *TemplateManager
|
|
UseCache bool
|
|
}
|
|
TemplateRouteHandlerFunc func(w http.ResponseWriter, r *http.Request, tm *TemplateManager)
|
|
)
|
|
|
|
func NewTemplateRoute(servlet *VinegarHttpServlet, 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{
|
|
VinegarWebRoute: 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
|
|
}
|