embed.go 749 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package fileicons
  2. import (
  3. "embed"
  4. "encoding/base64"
  5. "fmt"
  6. "strings"
  7. h "github.com/theplant/htmlgo"
  8. )
  9. //go:embed icons
  10. var icons embed.FS
  11. var svgs = map[string]string{}
  12. func init() {
  13. files, err := icons.ReadDir("icons")
  14. if err != nil {
  15. panic(err)
  16. }
  17. for _, f := range files {
  18. if f.IsDir() {
  19. continue
  20. }
  21. //fmt.Println(f.Name())
  22. svg, err := icons.ReadFile(fmt.Sprintf("icons/%s", f.Name()))
  23. if err != nil {
  24. panic(err)
  25. }
  26. filetype := strings.Split(f.Name(), ".")[0]
  27. svgs[filetype] = base64.StdEncoding.EncodeToString(svg)
  28. }
  29. //fmt.Println(svgs)
  30. }
  31. func Icon(ext string) *h.HTMLTagBuilder {
  32. img, ok := svgs[ext]
  33. if !ok {
  34. img = svgs["file"]
  35. }
  36. return h.Img(fmt.Sprintf("data:image/svg+xml;base64,%s", img))
  37. }