42c0e48081
ADDED: * stringsx.RemoveWhitespace, stringsx.StripWhitespace
100 lines
1.3 KiB
Go
100 lines
1.3 KiB
Go
package main
|
|
|
|
import (
|
|
"embed"
|
|
"io"
|
|
"io/fs"
|
|
// "fmt"
|
|
"log"
|
|
// "os"
|
|
// "path/filepath"
|
|
"text/template"
|
|
// "github.com/davecgh/go-spew/spew"
|
|
)
|
|
|
|
var (
|
|
//go:embed "tplfiles"
|
|
tplfiles embed.FS
|
|
|
|
tpl *template.Template = template.New("")
|
|
|
|
tw *TplWalker = new(TplWalker)
|
|
)
|
|
|
|
type (
|
|
TplWalker struct {
|
|
tpl *template.Template
|
|
fs fs.FS
|
|
}
|
|
)
|
|
|
|
func (t *TplWalker) walkFunc(fpath string, d fs.DirEntry, inErr error) (err error) {
|
|
|
|
var b []byte
|
|
var f fs.File
|
|
|
|
if inErr != nil {
|
|
err = inErr
|
|
return
|
|
}
|
|
|
|
if d.IsDir() {
|
|
return
|
|
}
|
|
|
|
if f, err = t.fs.Open(fpath); err != nil {
|
|
return
|
|
}
|
|
defer func() {
|
|
var ok bool
|
|
var c io.Closer
|
|
if f != nil {
|
|
if c, ok = f.(io.Closer); ok {
|
|
if err = c.Close(); err != nil {
|
|
return
|
|
}
|
|
}
|
|
}
|
|
}()
|
|
|
|
if b, err = io.ReadAll(f); err != nil {
|
|
return
|
|
}
|
|
|
|
if _, err = t.tpl.New(fpath).Parse(string(b)); err != nil {
|
|
return
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
func (t *TplWalker) Walk() (err error) {
|
|
|
|
if err = fs.WalkDir(t.fs, ".", t.walkFunc); err != nil {
|
|
return
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
func init() {
|
|
var err error
|
|
|
|
tw.tpl = tpl
|
|
tw.fs = tplfiles
|
|
|
|
if err = tw.Walk(); err != nil {
|
|
log.Panicln(err)
|
|
}
|
|
}
|
|
|
|
func main() {
|
|
var idx int
|
|
var sub *template.Template
|
|
|
|
log.Printf("Root template name is %q", tpl.Name())
|
|
for idx, sub = range tpl.Templates() {
|
|
log.Printf("Sub template %d: %q", idx, sub.Name())
|
|
}
|
|
}
|