Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
57fa355a6f | ||
|
|
806b70dee6 | ||
|
|
884c349d11 | ||
|
|
9c2606f03d |
12
README.md
Normal file
12
README.md
Normal 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
3
go.mod
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
module gitea.tecamino.com/paadi/template-builder
|
||||||
|
|
||||||
|
go 1.25.4
|
||||||
5
models/output.go
Normal file
5
models/output.go
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
package models
|
||||||
|
|
||||||
|
type Outputs []Output
|
||||||
|
|
||||||
|
type Output []byte
|
||||||
67
templateBuilder.go
Normal file
67
templateBuilder.go
Normal 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
|
||||||
|
}
|
||||||
@@ -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)
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user