🚚 Moved SafeHTML util into separated templateutil package

This commit is contained in:
Maxim Lebedev 2023-11-09 01:12:45 +06:00
parent 6b1a81e8cb
commit c7158f47dd
Signed by: toby3d
GPG Key ID: 1F14E25B7C119FC5
2 changed files with 25 additions and 15 deletions

View File

@ -0,0 +1,20 @@
package templateutil
import (
"errors"
"html/template"
"reflect"
)
var ErrSafeHTML error = errors.New("unsupported input type for SafeHTML")
func SafeHTML(v reflect.Value) (template.HTML, error) {
switch v.Kind() {
default:
return "", ErrSafeHTML
case reflect.Slice:
return template.HTML(v.Bytes()), nil
case reflect.String:
return template.HTML(v.String()), nil
}
}

View File

@ -2,12 +2,11 @@ package fs
import (
"context"
"errors"
"fmt"
"html/template"
"io/fs"
"reflect"
"source.toby3d.me/toby3d/home/internal/templateutil"
"source.toby3d.me/toby3d/home/internal/theme"
)
@ -15,19 +14,8 @@ type fileSystemThemeRepository struct {
dir fs.FS
}
var ErrSafeHTML error = errors.New("unsupported input type for SafeHTML")
var helpers = template.FuncMap{
"safeHTML": func(v reflect.Value) (template.HTML, error) {
switch v.Kind() {
default:
return "", ErrSafeHTML
case reflect.Slice:
return template.HTML(v.Bytes()), nil
case reflect.String:
return template.HTML(v.String()), nil
}
},
"safeHTML": templateutil.SafeHTML,
}
func NewFileSystemThemeRepository(dir fs.FS) theme.Repository {
@ -37,7 +25,9 @@ func NewFileSystemThemeRepository(dir fs.FS) theme.Repository {
}
func (repo *fileSystemThemeRepository) Get(ctx context.Context) (*template.Template, error) {
tpl, err := template.New("").Funcs(helpers).ParseFS(repo.dir, "baseof.html", "single.html")
tpl, err := template.New("").
Funcs(helpers).
ParseFS(repo.dir, "baseof.html", "single.html")
if err != nil {
return nil, fmt.Errorf("cannot find baseof template: %w", err)
}