web_render.go 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. // package web_render -- возвращает веб-рендер
  2. package web_render
  3. import (
  4. _ "embed"
  5. "strings"
  6. "wartank/pkg/kernel/kernel_log"
  7. . "wartank/server/lev0/types"
  8. )
  9. // ВебРендер -- простой веб-рендер
  10. type ВебРендер struct {
  11. лог *kernel_log.Логгер
  12. слвБлок map[string]string
  13. }
  14. //go:embed base.tmpl.html
  15. var стрБаза string
  16. //go:embed header.tmpl.html
  17. var стрЗаголовок string
  18. //go:embed footer.tmpl.html
  19. var стрПодвал string
  20. // НовВебРендер -- возвращает новый веб-рендер
  21. func НовВебРендер(шаблон string) *ВебРендер {
  22. лог := kernel_log.НовЛоггер("ВебРендер")
  23. сам := &ВебРендер{
  24. лог: лог,
  25. слвБлок: map[string]string{},
  26. }
  27. сам.слвБлок["{.header}"] = стрЗаголовок
  28. сам.слвБлок["{.main}"] = шаблон
  29. сам.слвБлок["{.footer}"] = стрПодвал
  30. _ = ИВебРендер(сам)
  31. return сам
  32. }
  33. // Получ -- возвращает результат рендеринга
  34. func (сам *ВебРендер) Получ() string {
  35. рез := стрБаза
  36. for ключ, блок := range сам.слвБлок {
  37. рез = strings.ReplaceAll(рез, ключ, блок)
  38. }
  39. return рез
  40. }
  41. // Доб -- добавляет блок замещения
  42. func (сам *ВебРендер) Доб(ключ, блок string) {
  43. сам.лог.Паника(ключ == "", "ВебРендер.Доб(): пустой ключ")
  44. сам.слвБлок[ключ] = блок
  45. }