hikan.ru/mvc/models/app.go

57 lines
1.1 KiB
Go

package models
import (
"html/template"
"os"
"path/filepath"
"strings"
"time"
)
// App хранит шаблоны и время запуска
type app struct {
Templates *template.Template // Шаблоны страниц
Version int64 // Время запуска
}
var (
App = &app{}
)
// Инициализирует приложение
func InitApp() error {
App.Version = time.Now().Unix()
// Загрузка шаблонов
if err := App.loadTemplates(Cfg.TemplatesDir, Cfg.TemplatesExt); err != nil {
return err
}
return nil
}
// Загрузка шаблонов
func (a *app) loadTemplates(templatesPath string, ext string) error {
tmpls := template.New("")
err := filepath.Walk(templatesPath, func(path string, f os.FileInfo, err error) error {
if err != nil {
return err
}
if !f.IsDir() && strings.HasSuffix(f.Name(), ext) {
_, err = tmpls.ParseFiles(path)
if err != nil {
return err
}
}
return nil
})
if err != nil {
return err
}
a.Templates = tmpls
return nil
}