Files
horse/horsegen/gen.go

47 lines
1.0 KiB
Go

package main
import (
_ "embed"
"fmt"
"io"
"strings"
"text/template"
)
//go:embed character.kk.template
var characterKK string
// LoadTemplates sets up templates to render game data to source code.
func LoadTemplates() (*template.Template, error) {
t := template.New("root")
t.Funcs(template.FuncMap{
"kkenum": kkenum,
})
t, err := t.Parse(characterKK)
if err != nil {
return nil, fmt.Errorf("parsing characterKK: %w", err)
}
return t, nil
}
// ExecCharacterKK renders the Koka character module to w.
func ExecCharacterKK(t *template.Template, w io.Writer, c []Character, pairs, trios []AffinityRelation) error {
maxid := 0
for _, u := range c {
maxid = max(maxid, u.ID)
}
data := struct {
Characters []Character
Pairs []AffinityRelation
Trios []AffinityRelation
MaxID int
}{c, pairs, trios, maxid}
return t.ExecuteTemplate(w, "koka-character", &data)
}
func kkenum(name string) string {
name = strings.ReplaceAll(name, ".", "")
name = strings.ReplaceAll(name, " ", "-")
return name
}