feat: port engine from lib/ksrv
							parent
							
								
									cd95cf5454
								
							
						
					
					
						commit
						f03173b8a9
					
				|  | @ -0,0 +1,102 @@ | |||
| package netutil | ||||
| 
 | ||||
| import ( | ||||
| 	"bytes" | ||||
| 	"html/template" | ||||
| 	"io" | ||||
| 	"io/fs" | ||||
| 	"path/filepath" | ||||
| ) | ||||
| 
 | ||||
| type Engine struct { | ||||
| 	name     string | ||||
| 	Template *template.Template | ||||
| } | ||||
| 
 | ||||
| func NewEngine(name string) *Engine { | ||||
| 	Ename := "E" + name | ||||
| 	if Ename == "E" { | ||||
| 		Ename = "Engine" | ||||
| 	} | ||||
| 	return &Engine{Ename, template.New(name)} | ||||
| } | ||||
| 
 | ||||
| func (e *Engine) Funcs(funcMap template.FuncMap) *Engine { | ||||
| 	e.Template = e.Template.Funcs(funcMap) | ||||
| 	return e | ||||
| } | ||||
| func (e *Engine) Parse(text string) (*Engine, error) { | ||||
| 	tmp, err := e.Template.Parse(text) | ||||
| 	if err != nil { | ||||
| 		return e, err | ||||
| 	} | ||||
| 	e.Template = tmp | ||||
| 	return e, err | ||||
| } | ||||
| func (e *Engine) ParseFS(fs fs.FS, patterns ...string) (*Engine, error) { | ||||
| 	tmp, err := e.Template.ParseFS(fs, patterns...) | ||||
| 	if err != nil { | ||||
| 		return e, err | ||||
| 	} | ||||
| 	e.Template = tmp | ||||
| 	return e, err | ||||
| } | ||||
| 
 | ||||
| func (e *Engine) ParseFiles(filenames ...string) (*Engine, error) { | ||||
| 	tmp, err := e.Template.ParseFiles(filenames...) | ||||
| 	if err != nil { | ||||
| 		return e, err | ||||
| 	} | ||||
| 	e.Template = tmp | ||||
| 	return e, err | ||||
| } | ||||
| 
 | ||||
| func (e *Engine) ParseGlob(pattern string) (*Engine, error) { | ||||
| 	tmp, err := e.Template.ParseGlob(pattern) | ||||
| 	if err != nil { | ||||
| 		return e, err | ||||
| 	} | ||||
| 	e.Template = tmp | ||||
| 	return e, err | ||||
| } | ||||
| 
 | ||||
| func (e *Engine) OverrideGlob(pattern string) (*Engine, error) { | ||||
| 	matches, _ := filepath.Glob(pattern) | ||||
| 	if len(matches) <= 0 { | ||||
| 		// surpass error if no tmpl found
 | ||||
| 		return e, nil | ||||
| 	} | ||||
| 	tmp, err := e.Template.ParseGlob(pattern) | ||||
| 	if err != nil { | ||||
| 		return e, err | ||||
| 	} | ||||
| 	e.Template = tmp | ||||
| 	return e, err | ||||
| } | ||||
| 
 | ||||
| func Must(e *Engine, err error) *Engine { | ||||
| 	if err != nil { | ||||
| 		panic(err) | ||||
| 	} | ||||
| 	return e | ||||
| } | ||||
| 
 | ||||
| func (e *Engine) ExecuteTemplate(wr io.Writer, name string, data interface{}) error { | ||||
| 	buf := &bytes.Buffer{} | ||||
| 	err := e.Template.ExecuteTemplate(buf, name, data) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	_, err = wr.Write(buf.Bytes()) | ||||
| 	return err | ||||
| } | ||||
| 
 | ||||
| func (e *Engine) Execute(wr io.Writer, data interface{}) error { | ||||
| 	buf := &bytes.Buffer{} | ||||
| 	err := e.Template.Execute(buf, data) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	_, err = wr.Write(buf.Bytes()) | ||||
| 	return err | ||||
| } | ||||
		Loading…
	
		Reference in New Issue