| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- // package web_render -- возвращает веб-рендер
- package web_render
- import (
- _ "embed"
- "fmt"
- "strings"
- . "wartank/app/lev0/types"
- "wartank/kernel"
- . "wartank/kernel/kernel_types"
- )
- // ВебРендер -- простой веб-рендер
- type ВебРендер struct {
- лог ИЯдроЛог
- слвБлок map[string]interface{}
- }
- //go:embed base.tmpl.html
- var стрБаза string
- //go:embed header.tmpl.html
- var стрЗаголовок string
- //go:embed footer.tmpl.html
- var стрПодвал string
- // НовВебРендер -- возвращает новый веб-рендер
- func НовВебРендер(шаблон string) *ВебРендер {
- лог := kernel.НовЛог("ВебРендер")
- сам := &ВебРендер{
- лог: лог,
- слвБлок: map[string]interface{}{},
- }
- сам.слвБлок["{.header}"] = стрЗаголовок
- сам.слвБлок["{.main}"] = шаблон
- сам.слвБлок["{.footer}"] = стрПодвал
- _ = ИВебРендер(сам)
- return сам
- }
- // Получ -- возвращает результат рендеринга
- func (сам *ВебРендер) Получ() string {
- рез := стрБаза
- for ключ, блок := range сам.слвБлок {
- рез = strings.ReplaceAll(рез, ключ, fmt.Sprint(блок))
- }
- return рез
- }
- // Доб -- добавляет блок замещения
- func (сам *ВебРендер) Доб(ключ string, блок interface{}) {
- сам.лог.Паника(ключ == "", "ВебРендер.Доб(): пустой ключ")
- сам.слвБлок[ключ] = блок
- }
|