hikan.ru/mvc/models/app.go

57 lines
1.1 KiB
Go

package models
import (
"html/template"
"log"
"os"
"path/filepath"
"strings"
"time"
)
// App хранит шаблоны и время запуска
type App struct {
Templates *template.Template // Шаблоны страниц
Version int64 // Время запуска
}
// Инициализирует приложение
func AppInit() (*App, error) {
a := &App{
Version: time.Now().Unix(),
}
// Загрузка шаблонов
if err := a.loadTemplates(Cfg.TemplatesDir, Cfg.TemplatesExt); err != nil {
log.Fatal(err)
}
return a, 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
}