From 3f3ffb4becf159613babbc2f2b6e49db153d0d48 Mon Sep 17 00:00:00 2001 From: Jan-Lukas Else Date: Sun, 20 Sep 2020 19:10:01 +0200 Subject: [PATCH] Add methods to use configurable strings in templates (preparation for multiblog/multilang) --- main.go | 7 ++++++- render.go | 3 ++- templateStrings.go | 38 ++++++++++++++++++++++++++++++++++ templates/post.gohtml | 6 ++++-- templates/strings/default.yaml | 2 ++ 5 files changed, 52 insertions(+), 4 deletions(-) create mode 100644 templateStrings.go create mode 100644 templates/strings/default.yaml diff --git a/main.go b/main.go index 0de8011..51e3599 100644 --- a/main.go +++ b/main.go @@ -24,12 +24,17 @@ func main() { } log.Println("Initialize server components...") initMinify() + initMarkdown() err = initTemplateAssets() // Needs minify if err != nil { log.Fatal(err) return } - initMarkdown() + err = initTemplateStrings() + if err != nil { + log.Fatal(err) + return + } err = initRendering() // Needs assets if err != nil { log.Fatal(err) diff --git a/render.go b/render.go index 7338906..e6b5d53 100644 --- a/render.go +++ b/render.go @@ -63,7 +63,8 @@ func initRendering() error { } return d.Format(format) }, - "asset": assetFile, + "asset": assetFile, + "string": getDefaultTemplateString, "include": func(templateName string, data interface{}) (template.HTML, error) { buf := new(bytes.Buffer) err := templates[templateName].ExecuteTemplate(buf, templateName, data) diff --git a/templateStrings.go b/templateStrings.go new file mode 100644 index 0000000..d075f0c --- /dev/null +++ b/templateStrings.go @@ -0,0 +1,38 @@ +package main + +import ( + "gopkg.in/yaml.v3" + "io/ioutil" + "path" +) + +const stringsDir = "templates/strings" +const defaultVariant = "default" +const variantFileExt = ".yaml" + +var templateStrings map[string]map[string]string + +func initTemplateStrings() error { + templateStrings = map[string]map[string]string{} + for _, variant := range []string{defaultVariant} { + variantStrings := map[string]string{} + fileContent, err := ioutil.ReadFile(path.Join(stringsDir, variant+variantFileExt)) + if err != nil { + return err + } + err = yaml.Unmarshal(fileContent, variantStrings) + if err != nil { + return err + } + templateStrings[variant] = variantStrings + } + return nil +} + +func getDefaultTemplateString(name string) string { + return getTemplateStringVariant(name, defaultVariant) +} + +func getTemplateStringVariant(name, variant string) string { + return templateStrings[variant][name] +} diff --git a/templates/post.gohtml b/templates/post.gohtml index 1d3dbf6..d43834c 100644 --- a/templates/post.gohtml +++ b/templates/post.gohtml @@ -6,8 +6,10 @@
{{ with title . }}

{{ . }}

{{ end }} - {{ with .Published }}

Published on {{ dateformat . "02. Jan 2006" }}

{{ end }} - {{ with .Updated }}

Updated on {{ dateformat . "02. Jan 2006" }}

{{ end }} + {{ with .Published }} +

{{ string "publishedon" }} {{ dateformat . "02. Jan 2006" }}

{{ end }} + {{ with .Updated }} +

{{ string "updatedon" }} {{ dateformat . "02. Jan 2006" }}

{{ end }} {{ with .Content }}
{{ md . }}
{{ end }} diff --git a/templates/strings/default.yaml b/templates/strings/default.yaml new file mode 100644 index 0000000..0e513b0 --- /dev/null +++ b/templates/strings/default.yaml @@ -0,0 +1,2 @@ +publishedon: "Published on" +updatedon: "Updated on" \ No newline at end of file