// Package templates provides embedded HTML templates for the RouteWatch application package templates import ( _ "embed" "html/template" "sync" ) //go:embed status.html var statusHTML string // Templates contains all parsed templates type Templates struct { Status *template.Template } var ( //nolint:gochecknoglobals // Singleton pattern for templates defaultTemplates *Templates //nolint:gochecknoglobals // Singleton pattern for templates once sync.Once ) // initTemplates parses all embedded templates func initTemplates() { var err error defaultTemplates = &Templates{} // Parse status template defaultTemplates.Status, err = template.New("status").Parse(statusHTML) if err != nil { panic("failed to parse status template: " + err.Error()) } } // Get returns the singleton Templates instance func Get() *Templates { once.Do(initTemplates) return defaultTemplates } // StatusTemplate returns the parsed status template func StatusTemplate() *template.Template { return Get().Status }