Use module for template strings

This commit is contained in:
Jan-Lukas Else 2021-05-23 10:09:41 +02:00
parent 3858ffd9b8
commit 93849d289b
4 changed files with 15 additions and 57 deletions

3
go.mod
View File

@ -3,7 +3,8 @@ module git.jlel.se/jlelse/GoBlog
go 1.16
require (
git.jlel.se/jlelse/goldmark-mark v0.0.0-20210522161410-1a4509a3e844
git.jlel.se/jlelse/goldmark-mark v0.0.0-20210522162520-9788c89266a4
git.jlel.se/jlelse/template-strings v0.0.0-20210523080439-57437f8d23ee
github.com/PuerkitoBio/goquery v1.6.1
github.com/andybalholm/cascadia v1.2.0 // indirect
github.com/araddon/dateparse v0.0.0-20210429162001-6b43995a97de

6
go.sum
View File

@ -12,8 +12,10 @@ cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqCl
cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
git.jlel.se/jlelse/goldmark-mark v0.0.0-20210522161410-1a4509a3e844 h1:fZ2a31wUVzEnhJAgz9jyoRWoSRTc1NgzB+y7grI4aJU=
git.jlel.se/jlelse/goldmark-mark v0.0.0-20210522161410-1a4509a3e844/go.mod h1:ZFhxwbX+afhgbzh5rpkSJUp6vIduNPtIGDrsWpIcHTE=
git.jlel.se/jlelse/goldmark-mark v0.0.0-20210522162520-9788c89266a4 h1:p3c/vCY6MUADNXWCYI/hsZ8ZEvN7LtvwHzK2B8Y6BSk=
git.jlel.se/jlelse/goldmark-mark v0.0.0-20210522162520-9788c89266a4/go.mod h1:ZFhxwbX+afhgbzh5rpkSJUp6vIduNPtIGDrsWpIcHTE=
git.jlel.se/jlelse/template-strings v0.0.0-20210523080439-57437f8d23ee h1:zun+B6UygGTYm+OBxK9eoPUHSd3M7AebIxXJyFyZzR4=
git.jlel.se/jlelse/template-strings v0.0.0-20210523080439-57437f8d23ee/go.mod h1:KA7sVmsYAMxpPUBdDSSzShP8+sKLM16wnpKVk8ltaA0=
github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=

View File

@ -121,7 +121,7 @@ func initRendering() error {
},
"asset": assetFileName,
"assetsri": assetSRI,
"string": getTemplateStringVariant,
"string": appTs.GetTemplateStringVariantFunc(),
"include": func(templateName string, data ...interface{}) (template.HTML, error) {
if len(data) == 0 || len(data) > 2 {
return "", errors.New("wrong argument count")

View File

@ -1,61 +1,16 @@
package main
import (
"os"
"path/filepath"
"gopkg.in/yaml.v3"
ts "git.jlel.se/jlelse/template-strings"
)
const stringsDir = "templates/strings"
const defaultStrings = "default"
const variantFileExt = ".yaml"
var appTs *ts.TemplateStrings
var templateStrings map[string]map[string]string
func initTemplateStrings() error {
templateStrings = map[string]map[string]string{}
variants := []string{defaultStrings}
for _, blog := range appConfig.Blogs {
variants = append(variants, blog.Lang)
func initTemplateStrings() (err error) {
var blogLangs []string
for _, b := range appConfig.Blogs {
blogLangs = append(blogLangs, b.Lang)
}
for _, variant := range variants {
variantStrings := map[string]string{}
f, err := os.Open(filepath.Join(stringsDir, variant+variantFileExt))
if err != nil {
if os.IsNotExist(err) {
continue
}
return err
}
err = yaml.NewDecoder(f).Decode(variantStrings)
if err != nil {
return err
}
templateStrings[variant] = variantStrings
}
return nil
}
func getTemplateStringVariant(input ...string) (result string) {
var lang, name string
if l := len(input); l == 1 {
lang = appConfig.Blogs[appConfig.DefaultBlog].Lang
name = input[0]
} else if l == 2 {
lang = input[0]
name = input[1]
} else {
// Wrong number of input strings
return ""
}
m, ok := templateStrings[lang]
if !ok {
m = templateStrings[defaultStrings]
}
result, ok = m[name]
if !ok {
result = templateStrings[defaultStrings][name]
}
return
appTs, err = ts.InitTemplateStrings("templates/strings", ".yaml", "default", blogLangs...)
return err
}