2015-05-05 01:49:49 +08:00
|
|
|
package setup
|
|
|
|
|
|
|
|
import (
|
2015-05-06 05:50:42 +08:00
|
|
|
"net/http"
|
|
|
|
|
2015-05-05 01:49:49 +08:00
|
|
|
"github.com/mholt/caddy/middleware"
|
|
|
|
"github.com/mholt/caddy/middleware/templates"
|
|
|
|
)
|
|
|
|
|
|
|
|
// Templates configures a new Templates middleware instance.
|
|
|
|
func Templates(c *Controller) (middleware.Middleware, error) {
|
|
|
|
rules, err := templatesParse(c)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
tmpls := templates.Templates{
|
2015-05-06 05:50:42 +08:00
|
|
|
Rules: rules,
|
|
|
|
Root: c.Root,
|
|
|
|
FileSys: http.Dir(c.Root),
|
2015-05-05 01:49:49 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
return func(next middleware.Handler) middleware.Handler {
|
|
|
|
tmpls.Next = next
|
|
|
|
return tmpls
|
|
|
|
}, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func templatesParse(c *Controller) ([]templates.Rule, error) {
|
|
|
|
var rules []templates.Rule
|
|
|
|
|
|
|
|
for c.Next() {
|
|
|
|
var rule templates.Rule
|
|
|
|
|
|
|
|
if c.NextArg() {
|
|
|
|
// First argument would be the path
|
|
|
|
rule.Path = c.Val()
|
|
|
|
|
|
|
|
// Any remaining arguments are extensions
|
|
|
|
rule.Extensions = c.RemainingArgs()
|
|
|
|
if len(rule.Extensions) == 0 {
|
2015-06-27 06:19:44 +08:00
|
|
|
rule.Extensions = defaultTemplateExtensions
|
2015-05-05 01:49:49 +08:00
|
|
|
}
|
|
|
|
} else {
|
2015-06-27 06:19:44 +08:00
|
|
|
rule.Path = defaultTemplatePath
|
|
|
|
rule.Extensions = defaultTemplateExtensions
|
2015-05-05 01:49:49 +08:00
|
|
|
}
|
|
|
|
|
2015-05-06 05:50:42 +08:00
|
|
|
for _, ext := range rule.Extensions {
|
|
|
|
rule.IndexFiles = append(rule.IndexFiles, "index"+ext)
|
|
|
|
}
|
|
|
|
|
2015-05-05 01:49:49 +08:00
|
|
|
rules = append(rules, rule)
|
|
|
|
}
|
|
|
|
|
|
|
|
return rules, nil
|
|
|
|
}
|
|
|
|
|
2015-06-27 06:19:44 +08:00
|
|
|
const defaultTemplatePath = "/"
|
2015-05-05 01:49:49 +08:00
|
|
|
|
2015-06-27 06:19:44 +08:00
|
|
|
var defaultTemplateExtensions = []string{".html", ".htm", ".tmpl", ".tpl", ".txt"}
|