web_render.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. // package web_render -- возвращает веб-рендер
  2. package web_render
  3. import (
  4. _ "embed"
  5. "fmt"
  6. "strings"
  7. . "wartank/app/lev0/types"
  8. . "gitp78su.ipnodns.ru/svi/kern"
  9. . "gitp78su.ipnodns.ru/svi/kern/kc/helpers"
  10. . "gitp78su.ipnodns.ru/svi/kern/krn/ktypes"
  11. )
  12. // ВебРендер -- простой веб-рендер
  13. type ВебРендер struct {
  14. лог ILogBuf
  15. слвБлок map[string]interface{}
  16. шаблон string
  17. }
  18. // НовВебРендер -- возвращает новый веб-рендер
  19. func НовВебРендер(шаблон string) *ВебРендер {
  20. лог := NewLogBuf()
  21. сам := &ВебРендер{
  22. лог: лог,
  23. слвБлок: map[string]interface{}{},
  24. шаблон: шаблон,
  25. }
  26. _ = ИВебРендер(сам)
  27. return сам
  28. }
  29. // Получ -- возвращает результат рендеринга
  30. func (сам *ВебРендер) Получ() string {
  31. рез := сам.шаблон
  32. for ключ, блок := range сам.слвБлок {
  33. знач := fmt.Sprint(блок)
  34. рез = strings.ReplaceAll(рез, ключ, знач)
  35. }
  36. return рез
  37. }
  38. // Доб -- добавляет блок замещения
  39. func (сам *ВебРендер) Доб(ключ string, блок any) {
  40. Hassert(ключ != "", "ВебРендер.Доб(): пустой ключ")
  41. сам.слвБлок[ключ] = блок
  42. }