38 lines
646 B
Go
38 lines
646 B
Go
package handlers
|
|
|
|
import (
|
|
"embed"
|
|
"html/template"
|
|
"io/fs"
|
|
"log"
|
|
"net/http"
|
|
"regexp"
|
|
)
|
|
|
|
//go:embed templates/*
|
|
var templateFS embed.FS
|
|
|
|
//go:embed static/*
|
|
var staticFS embed.FS
|
|
|
|
var tagRe = regexp.MustCompile(`<[^>]*>`)
|
|
|
|
func stripHTML(s string) string {
|
|
return tagRe.ReplaceAllString(s, "")
|
|
}
|
|
|
|
func ParseTemplates() (*template.Template, error) {
|
|
funcMap := template.FuncMap{
|
|
"plain": stripHTML,
|
|
}
|
|
return template.New("").Funcs(funcMap).ParseFS(templateFS, "templates/*.html")
|
|
}
|
|
|
|
func StaticHandler() http.Handler {
|
|
sub, err := fs.Sub(staticFS, "static")
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
return http.FileServer(http.FS(sub))
|
|
}
|