4 Commits

Author SHA1 Message Date
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
Adrian Zürcher
884c349d11 remove .git 2025-12-18 16:22:03 +01:00
Adrian Zürcher
9c2606f03d push all 2025-12-18 14:58:46 +01:00
5 changed files with 102 additions and 4 deletions

12
README.md Normal file
View File

@@ -0,0 +1,12 @@
# 🛠️ Go Template Builder
A lightweight, no-nonsense Go library to parse and render templates directly from files. Stop writing boilerplate for `text/template` and `html/template`—just point to a file, pass your data, and you're done.
---
## 📦 Installation
To use this package in your project, run:
```bash
go get [gitea.tecamino.com//paadi/template-builder](https://gitea.tecamino.com/paadi/template-builder)

3
go.mod Normal file
View File

@@ -0,0 +1,3 @@
module gitea.tecamino.com/paadi/template-builder
go 1.25.4

5
models/output.go Normal file
View File

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

67
templateBuilder.go Normal file
View File

@@ -0,0 +1,67 @@
package templatebuilder
import (
"bytes"
"html/template"
"os"
"gitea.tecamino.com/paadi/template-builder/models"
)
type TemplateBuilder struct {
}
func NewTemplateBuilder() *TemplateBuilder {
return &TemplateBuilder{}
}
func (tb *TemplateBuilder) GenerateFile(templatePath, outputFile string, data any) error {
tmpl, err := template.ParseFiles(templatePath)
if err != nil {
return err
}
f, err := os.Create(outputFile)
if err != nil {
return err
}
defer f.Close()
err = tmpl.Execute(f, data)
if err != nil {
return err
}
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, d)
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

@@ -3,7 +3,7 @@ package test
import ( import (
"testing" "testing"
templatebuilder "gitea.tecamino.com/paadi/template-builder.git" templatebuilder "gitea.tecamino.com/paadi/template-builder"
) )
type Inventory struct { type Inventory struct {
@@ -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)
}