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