// Pase files match the [pattern] and store file path of each template name in templateMapPaths func ParseGlob(templates *template.Template, pattern string) (*template.Template, error) { filePaths, err := filepath.Glob(pattern) if err != nil { return templates, err } if len(filePaths) == 0 { return templates, fmt.Errorf("mangotemplate.ParseGlob: pattern matches no files: %#q", pattern) } for _, path := range filePaths { _, err := templates.ParseFiles(path) if err != nil { return templates, err } for _, parsedTemplate := range templates.Templates() { if _, ok := templateMapPaths[parsedTemplate.Name()]; ok { continue } templateMapPaths[parsedTemplate.Name()] = path } } return templates, nil }
func parseTemplates(tpl *template.Template) (err error) { templatesToBeParsed := []string{tpl.Name()} for len(templatesToBeParsed) != 0 { name := templatesToBeParsed[0] templatesToBeParsed = templatesToBeParsed[1:] parsed := false for _, t := range tpl.Templates() { if tpl.Name() != name && t.Name() == name { parsed = true break } } if !parsed { content, err := readTemplate(name) if err != nil { return err } _, err = tpl.Parse(content) check(err) for _, matched := range templateKeyword.FindAllStringSubmatch(content, -1) { templatesToBeParsed = append(templatesToBeParsed, matched[1]) } } } return }
func getTemplate(tpl *template.Template) (s string) { for _, j := range tpl.Templates() { s += j.Name() + ", " } return s }
func debugPrintLoadTemplate(tmpl *template.Template) { if IsDebugging() { var buf bytes.Buffer for _, tmpl := range tmpl.Templates() { buf.WriteString("\t- ") buf.WriteString(tmpl.Name()) buf.WriteString("\n") } debugPrint("Loaded HTML Templates (%d): \n%s\n", len(tmpl.Templates()), buf.String()) } }
func printTemplate(tpl *template.Template, max, level int) { if level > max { return } log.Printf("Printing template: %v @ %v", tpl.Name(), level) for i, j := range tpl.Templates() { log.Printf("TEMPLATE: %v=%v", i, j.Name()) } for _, j := range tpl.Templates() { printTemplate(j, max, level+1) } }
func parseTemplates(tpl *template.Template) (err error) { templatesToBeParsed := []string{tpl.Name()} for len(templatesToBeParsed) != 0 { name := templatesToBeParsed[0] templatesToBeParsed = templatesToBeParsed[1:] parsed := false for _, t := range tpl.Templates() { if tpl.Name() != name && t.Name() == name { parsed = true break } } if !parsed { content, path, err := readTemplate(name) if err != nil { return err } if _, err = tpl.New(path).Parse(content); err != nil { if strings.Contains(err.Error(), "redefinition of template") { return fmt.Errorf("A redefinition error raised while parsing [%s]. Did you happen to put the HTML comments outside the {{define}} block?)", name) } return err } for _, matched := range templateKeyword.FindAllStringSubmatch(content, -1) { templatesToBeParsed = append(templatesToBeParsed, matched[1]) } } } return }