本文整理汇总了Golang中text/template.Template.Templates方法的典型用法代码示例。如果您正苦于以下问题:Golang Template.Templates方法的具体用法?Golang Template.Templates怎么用?Golang Template.Templates使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类text/template.Template
的用法示例。
在下文中一共展示了Template.Templates方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: mergeTemplate
// Returns a copy of the root template with the supplied template merged in.
func (ts *Templates) mergeTemplate(t *template.Template) (out *template.Template, err error) {
defer func() {
if r := recover(); r != nil {
// Seems to be a bug with cloning empty templates.
err = fmt.Errorf("Problem cloning template: %v", r)
}
}()
if ts.empty {
out = template.New("root")
} else {
if out, err = ts.root.Clone(); err != nil {
return
}
}
for _, tmpl := range t.Templates() {
ptr := out.Lookup(tmpl.Name())
if ptr == nil {
out.Parse(fmt.Sprintf(`{{define "%v"}}{{end}}`, tmpl.Name()))
ptr = out.Lookup(tmpl.Name())
}
var clone *template.Template
if clone, err = tmpl.Clone(); err != nil {
return
}
(*ptr) = *clone
// Merge existing root templates back into new template.
for _, out_tmpl := range out.Templates() {
ptr2 := clone.Lookup(out_tmpl.Name())
if ptr2 == nil {
clone.Parse(fmt.Sprintf(`{{define "%v"}}{{end}}`, out_tmpl.Name()))
ptr2 = clone.Lookup(out_tmpl.Name())
(*ptr2) = *out_tmpl
}
}
}
return
}