3 Commits

Author SHA1 Message Date
Adrian Zürcher
107352787c fix wrong variable 2026-01-08 09:42:27 +01:00
Adrian Zürcher
57fa355a6f add new multiple generate function 2026-01-08 09:41:07 +01:00
Adrian Zürcher
806b70dee6 new function one for creating file and one for only byte slice 2026-01-06 07:34:17 +01:00
3 changed files with 55 additions and 4 deletions

5
models/output.go Normal file
View File

@@ -0,0 +1,5 @@
package models
type Outputs []Output
type Output []byte

View File

@@ -1,8 +1,11 @@
package templatebuilder package templatebuilder
import ( import (
"bytes"
"html/template" "html/template"
"os" "os"
"gitea.tecamino.com/paadi/template-builder/models"
) )
type TemplateBuilder struct { type TemplateBuilder struct {
@@ -12,7 +15,7 @@ func NewTemplateBuilder() *TemplateBuilder {
return &TemplateBuilder{} return &TemplateBuilder{}
} }
func (tb *TemplateBuilder) Generate(templatePath, outputFile string, data any) error { func (tb *TemplateBuilder) GenerateFile(templatePath, outputFile string, data any) error {
tmpl, err := template.ParseFiles(templatePath) tmpl, err := template.ParseFiles(templatePath)
if err != nil { if err != nil {
return err return err
@@ -30,3 +33,35 @@ func (tb *TemplateBuilder) Generate(templatePath, outputFile string, data any) e
} }
return nil return nil
} }
func (tb *TemplateBuilder) Generate(templatePath string, data any) (b []byte, err error) {
tmpl, err := template.ParseFiles(templatePath)
if err != nil {
return
}
var buf bytes.Buffer
err = tmpl.Execute(&buf, data)
if err != nil {
return
}
b = buf.Bytes()
return
}
func (tb *TemplateBuilder) GenerateMultiple(templatePath string, data ...any) (output models.Outputs, err error) {
tmpl, err := template.ParseFiles(templatePath)
if err != nil {
return
}
for _, d := range data {
var buf bytes.Buffer
err = tmpl.Execute(&buf, d)
if err != nil {
return
}
output = append(output, buf.Bytes())
}
return
}

View File

@@ -11,13 +11,24 @@ type Inventory struct {
Count uint Count uint
} }
func TestTemplateBuilder(t *testing.T) { func TestTemplateBuilderFile(t *testing.T) {
sweaters := Inventory{"wool", 17} sweaters := Inventory{"wool", 17}
t.Log("start test") t.Log("start test")
tmplBuilder := templatebuilder.NewTemplateBuilder() tmplBuilder := templatebuilder.NewTemplateBuilder()
err := tmplBuilder.Generate("test.tmpl", "test.txt", sweaters) err := tmplBuilder.GenerateFile("test.tmpl", "test.txt", sweaters)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
} }
func TestTemplateBuilderData(t *testing.T) {
sweaters := Inventory{"wool", 17}
t.Log("start test")
tmplBuilder := templatebuilder.NewTemplateBuilder()
data, err := tmplBuilder.Generate("test.tmpl", sweaters)
if err != nil {
t.Fatal(err)
}
t.Log(data)
}