parser_funcs.go 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package inout
  2. import (
  3. "bytes"
  4. "fmt"
  5. "net/http"
  6. "os"
  7. "text/template"
  8. )
  9. func GetFuncMap() template.FuncMap {
  10. funcMap := template.FuncMap{
  11. "showFile": showFile,
  12. "genSeriesInt": genSeriesInt,
  13. }
  14. return funcMap
  15. }
  16. func genSeriesInt(start, stop int64) []int64 {
  17. values := make([]int64, 0)
  18. for i := start; i <= stop; i++ {
  19. values = append(values, i)
  20. }
  21. return values
  22. }
  23. func showFile(tmpl string) string {
  24. data, err := os.ReadFile(tmpl)
  25. if err != nil {
  26. return fmt.Sprintf("%+v", err)
  27. }
  28. return string(data)
  29. }
  30. func ParseTemplate(file string, input any) ([]byte, int) {
  31. var buff bytes.Buffer
  32. b, err := os.ReadFile(file)
  33. if err != nil {
  34. return fmt.Appendf(nil, "%+v", err), http.StatusInternalServerError
  35. }
  36. tmpl, err := template.New("parse").Funcs(GetFuncMap()).Parse(string(b))
  37. if err != nil {
  38. return fmt.Appendf(nil, "%+v", err), http.StatusInternalServerError
  39. }
  40. err = tmpl.Execute(&buff, input)
  41. if err != nil {
  42. return fmt.Appendf(nil, "%+v", err), http.StatusInternalServerError
  43. }
  44. return buff.Bytes(), http.StatusOK
  45. }