2024-08-19 22:32:43 +02:00
|
|
|
package assets
|
|
|
|
|
|
|
|
import (
|
|
|
|
"html/template"
|
|
|
|
"path/filepath"
|
|
|
|
"strings"
|
2024-08-20 13:35:49 +02:00
|
|
|
|
2024-08-22 15:15:16 +02:00
|
|
|
"git.tijl.dev/tijl/tijl.dev-core/assets"
|
|
|
|
"git.tijl.dev/tijl/tijl.dev-core/modules/logger"
|
2024-08-19 22:32:43 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
var SVGData map[string]string
|
|
|
|
|
2024-08-20 13:35:49 +02:00
|
|
|
func loadSVGs() {
|
2024-08-19 22:32:43 +02:00
|
|
|
SVGData = make(map[string]string)
|
|
|
|
|
2024-08-22 12:57:38 +02:00
|
|
|
files, err := assets.Embed.ReadDir("icons")
|
2024-08-19 22:32:43 +02:00
|
|
|
if err != nil {
|
2024-08-21 01:08:47 +02:00
|
|
|
log.Fatal().Err(err)
|
2024-08-19 22:32:43 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
for _, file := range files {
|
2024-08-22 12:57:38 +02:00
|
|
|
if file.IsDir() {
|
|
|
|
continue
|
|
|
|
}
|
|
|
|
|
|
|
|
if filepath.Ext(file.Name()) != ".svg" {
|
|
|
|
continue
|
|
|
|
}
|
|
|
|
|
|
|
|
data, err := assets.Embed.ReadFile(filepath.Join("icons", file.Name()))
|
2024-08-19 22:32:43 +02:00
|
|
|
if err != nil {
|
2024-08-21 01:08:47 +02:00
|
|
|
log.Fatal().Err(err)
|
2024-08-19 22:32:43 +02:00
|
|
|
continue
|
|
|
|
}
|
2024-08-22 12:57:38 +02:00
|
|
|
filename := file.Name()
|
2024-08-19 22:32:43 +02:00
|
|
|
key := strings.TrimSuffix(filename, filepath.Ext(filename))
|
|
|
|
SVGData[key] = string(data)
|
2024-08-22 12:57:38 +02:00
|
|
|
log.Debug().Str("filename", filename).Msg("assets.loadSVGs: loaded")
|
2024-08-19 22:32:43 +02:00
|
|
|
}
|
2024-08-20 13:35:49 +02:00
|
|
|
|
2024-08-22 13:47:16 +02:00
|
|
|
log.Info().Msg("loaded svg files")
|
2024-08-19 22:32:43 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
func Svg(name string) template.HTML {
|
|
|
|
if svg, ok := SVGData[name]; ok {
|
|
|
|
return template.HTML(svg)
|
|
|
|
}
|
|
|
|
return ""
|
|
|
|
}
|