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)) }