package elinps
import (
"html/template"
"path/filepath"
"strings"
)
func mustParseTemplates() *template.Template {
// Parse de templates via filesystem local (mantém o repositório simples).
// Se precisarmos de deploy single-binary, podemos migrar para go:embed.
funcs := template.FuncMap{
"seq": func(start, end int) []int {
if end < start {
return []int{}
}
out := make([]int, 0, end-start+1)
for i := start; i <= end; i++ {
out = append(out, i)
}
return out
},
"noteEq": func(ptr *int, v int) bool {
return ptr != nil && *ptr == v
},
"produtoLabel": func(produto string) string {
// Label "amigável" a partir do produto normalizado.
p := strings.ReplaceAll(produto, "_", " ")
parts := strings.Fields(p)
for i := range parts {
if len(parts[i]) == 0 {
continue
}
parts[i] = strings.ToUpper(parts[i][:1]) + parts[i][1:]
}
return strings.Join(parts, " ")
},
}
pattern := filepath.ToSlash("web/templates/*.html")
return template.Must(template.New("").Funcs(funcs).ParseGlob(pattern))
}