lib/tempura.go (58 lines of code) (raw):

package lib import ( "bytes" "encoding/json" "errors" "io/ioutil" "text/template" ) type Input map[string]interface{} type Tempura struct { Template string TemplateFilePath string Input Input } func (t *Tempura) SetInputFromString(jsonStr string) error { if err := json.Unmarshal([]byte(jsonStr), &t.Input); err != nil { return err } return nil } func (t *Tempura) SetInputFromJSON(jsonPath string) error { raw, err := ioutil.ReadFile(jsonPath) if err != nil { return err } if err := t.SetInputFromString(string(raw)); err != nil { return err } return nil } func (t *Tempura) getTemplate() (*template.Template, error) { if t.Template != "" { temp, err := template.New("").Parse(t.Template) if err != nil { return nil, err } return temp, nil } if t.TemplateFilePath != "" { temp, err := template.ParseFiles(t.TemplateFilePath) if err != nil { return nil, err } return temp, nil } return nil, errors.New("you should set template") } func (t *Tempura) Fill() (string, error) { temp, err := t.getTemplate() if err != nil { return "", err } var b bytes.Buffer if err := temp.Execute(&b, t.Input); err != nil { return "", err } return b.String(), nil }