PNG Data
`)
+ i18nContent := func(id, value string) string {
+ return fmt.Sprintf(`
+[%s]
+other = %q
+`, id, value)
+ }
+
+ b.WithSourceFile("i18n/en.toml", i18nContent("hello", "Hello"))
+ b.WithSourceFile("i18n/fr.toml", i18nContent("hello", "Bonjour"))
+ b.WithSourceFile("i18n/nb.toml", i18nContent("hello", "Hallo"))
+ b.WithSourceFile("i18n/nn.toml", i18nContent("hello", "Hallo"))
+
return &multiSiteTestBuilder{sitesBuilder: b, configFormat: configFormat, config: config, configData: configData}
}
}},
{"execute-as-template", func() bool {
- // TODO(bep) eventually remove
- return isGo111()
+ return true
}, func(b *sitesBuilder) {
b.WithTemplates("home.html", `
{{ $var := "Hugo Page" }}
"JSON: /jsons/data1.json: json1 content",
"JSONS: 2", "/jsons/data1.json: json1 content")
}
+
+func TestExecuteAsTemplateWithLanguage(t *testing.T) {
+ b := newMultiSiteTestDefaultBuilder(t)
+ indexContent := `
+Lang: {{ site.Language.Lang }}
+{{ $templ := "{{T \"hello\"}}" | resources.FromString "f1.html" }}
+{{ $helloResource := $templ | resources.ExecuteAsTemplate (print "f%s.html" .Lang) . }}
+Hello1: {{T "hello"}}
+Hello2: {{ $helloResource.Content }}
+LangURL: {{ relLangURL "foo" }}
+`
+ b.WithTemplatesAdded("index.html", indexContent)
+ b.WithTemplatesAdded("index.fr.html", indexContent)
+
+ b.Build(BuildCfg{})
+
+ b.AssertFileContent("public/en/index.html", `
+Hello1: Hello
+Hello2: Hello
+`)
+
+ b.AssertFileContent("public/fr/index.html", `
+Hello1: Bonjour
+Hello2: Bonjour
+`)
+
+}
text *textTemplates
html *htmlTemplates
- extTextTemplates []*textTemplate
-
amberFuncMap template.FuncMap
errors []*templateErr
}
}
-// NewTextTemplate provides a text template parser that has all the Hugo
-// template funcs etc. built-in.
-func (t *templateHandler) NewTextTemplate() tpl.TemplateParseFinder {
- t.mu.Lock()
- defer t.mu.Unlock()
-
- tt := &textTemplate{t: texttemplate.New("")}
- t.extTextTemplates = append(t.extTextTemplates, tt)
-
+func (t *templateHandler) wrapTextTemplate(tt *textTemplate) tpl.TemplateParseFinder {
return struct {
tpl.TemplateParser
tpl.TemplateLookup
shortcodes: make(map[string]*shortcodeTemplates),
templateInfo: t.templateInfo,
html: &htmlTemplates{t: template.Must(t.html.t.Clone()), overlays: make(map[string]*template.Template), templatesCommon: t.html.templatesCommon},
- text: &textTemplates{textTemplate: &textTemplate{t: texttemplate.Must(t.text.t.Clone())}, overlays: make(map[string]*texttemplate.Template), templatesCommon: t.text.templatesCommon},
- errors: make([]*templateErr, 0),
+ text: &textTemplates{
+ textTemplate: &textTemplate{t: texttemplate.Must(t.text.t.Clone())},
+ standalone: &textTemplate{t: texttemplate.New("")},
+ overlays: make(map[string]*texttemplate.Template), templatesCommon: t.text.templatesCommon},
+ errors: make([]*templateErr, 0),
}
for k, v := range t.shortcodes {
}
d.Tmpl = c
+ d.TextTmpl = c.wrapTextTemplate(c.text.standalone)
c.initFuncs()
}
textT := &textTemplates{
textTemplate: &textTemplate{t: texttemplate.New("")},
+ standalone: &textTemplate{t: texttemplate.New("")},
overlays: make(map[string]*texttemplate.Template),
templatesCommon: common,
}
type textTemplates struct {
*templatesCommon
*textTemplate
+ standalone *textTemplate
clone *texttemplate.Template
cloneClone *texttemplate.Template
func (t *templateHandler) setFuncs(funcMap map[string]interface{}) {
t.html.setFuncs(funcMap)
t.text.setFuncs(funcMap)
+ t.setFuncMapInTemplate(t.text.standalone.t, funcMap)
}
// SetFuncs replaces the funcs in the func maps with new definitions.
}
}
- for _, extText := range t.extTextTemplates {
- extText.t.Funcs(funcMap)
- }
-
// Amber is HTML only.
t.amberFuncMap = template.FuncMap{}