home/internal/templateutil/safe/safe.go
Maxim Lebedev ed217f118c
All checks were successful
/ docker (push) Successful in 1m9s
🐛 Fixed bloken safing slice of bytes
2023-11-09 09:01:34 +06:00

32 lines
555 B
Go

package safe
import (
"errors"
"html/template"
"reflect"
)
type Namespace struct{}
var ErrSafeHTML error = errors.New("unsupported input type for SafeHTML")
func New() *Namespace {
return &Namespace{}
}
func (Namespace) HTML(v reflect.Value) (template.HTML, error) {
switch v.Kind() {
default:
return "", ErrSafeHTML
case reflect.Slice:
switch v.Type().Elem().Kind() {
default:
return "", ErrSafeHTML
case reflect.Uint8:
return template.HTML(v.Bytes()), nil
}
case reflect.String:
return template.HTML(v.String()), nil
}
}