| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- // package web_render -- возвращает веб-рендер
- package web_render
- import (
- _ "embed"
- "fmt"
- "strings"
- . "wartank/app/lev0/types"
- . "gitp78su.ipnodns.ru/svi/kern"
- . "gitp78su.ipnodns.ru/svi/kern/kc/helpers"
- . "gitp78su.ipnodns.ru/svi/kern/krn/ktypes"
- )
- // ВебРендер -- простой веб-рендер
- type ВебРендер struct {
- лог ILogBuf
- слвБлок map[string]interface{}
- шаблон string
- }
- //go:embed base.tmpl.html
- var стрБаза string
- //go:embed header.tmpl.html
- var стрЗаголовок string
- //go:embed footer.tmpl.html
- var стрПодвал string
- // НовВебРендер -- возвращает новый веб-рендер
- func НовВебРендер(шаблон string) *ВебРендер {
- лог := NewLogBuf()
- сам := &ВебРендер{
- лог: лог,
- слвБлок: map[string]interface{}{},
- шаблон: шаблон,
- }
- сам.слвБлок["{.header}"] = стрЗаголовок
- сам.слвБлок["{.main}"] = шаблон
- сам.слвБлок["{.footer}"] = стрПодвал
- _ = ИВебРендер(сам)
- return сам
- }
- // Получ -- возвращает результат рендеринга
- func (сам *ВебРендер) Получ() string {
- рез := стрБаза
- рез = strings.ReplaceAll(рез, "{.header}", стрЗаголовок)
- рез = strings.ReplaceAll(рез, "{.main}", сам.шаблон)
- рез = strings.ReplaceAll(рез, "{.footer}", стрПодвал)
- for ключ, блок := range сам.слвБлок {
- знач:=fmt.Sprint(блок)
- if ключ=="{.id}"{
- рез = strings.ReplaceAll(рез, ключ, знач)
- }
- рез = strings.ReplaceAll(рез, ключ, знач)
- }
- return рез
- }
- // Доб -- добавляет блок замещения
- func (сам *ВебРендер) Доб(ключ string, блок interface{}) {
- Hassert(ключ != "", "ВебРендер.Доб(): пустой ключ")
- сам.слвБлок[ключ] = блок
- }
|