partial.go 917 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package partial
  2. import (
  3. "fmt"
  4. "os"
  5. "strings"
  6. "git.clearsky.net.au/cody/gex.git/pkg/gen/domquery"
  7. )
  8. func ProcessHTML(htmlStr string) (string, error) {
  9. dom := domquery.LoadHTML(htmlStr)
  10. partTag := dom.QuerySelector("part")
  11. if partTag.TagName() == "" {
  12. return dom.OuterHTML(), nil
  13. }
  14. attr := partTag.GetAttribute("src")
  15. attr = strings.TrimPrefix(attr, "/")
  16. attr = strings.Replace(attr, ".tpl", ".gen.tpl", 1)
  17. partFileByt, err := os.ReadFile(attr)
  18. if err != nil {
  19. fmt.Printf("ERROR: %s", err)
  20. return "", err
  21. }
  22. partFileHtml := string(partFileByt)
  23. partFileDom := domquery.LoadHTML(partFileHtml)
  24. slot := partFileDom.QuerySelector("slot")
  25. if slot.TagName() != "" {
  26. slot.SetOuterHTML(partTag.InnerHTML())
  27. }
  28. partTag.SetOuterHTML(partFileDom.InnerHTML())
  29. htmlStr, err = ProcessHTML(dom.InnerHTML())
  30. if err != nil {
  31. fmt.Printf("ERROR: %s", err)
  32. return "", err
  33. }
  34. return htmlStr, nil
  35. }