// 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(ключ != "", "ВебРендер.Доб(): пустой ключ") сам.слвБлок[ключ] = блок }