move style hashing to file layer
1 file changed, 11 insertions(+), 21 deletions(-)
changed files
M internal/builder/template.go → internal/builder/template/template.go
@@ -1,10 +1,9 @@ -package builder +package template import ( "bytes" "encoding/xml" "io" - "strings" "text/template" "go.alanpearce.eu/homestead/internal/atom"@@ -44,7 +43,7 @@ func (q *QueryDocument) Find(selector string) *QuerySelection { return &QuerySelection{q.Document.Find(selector)} } -func renderRobotsTXT(config *config.Config) (io.Reader, error) { +func RenderRobotsTXT(config *config.Config) (io.Reader, error) { r, w := io.Pipe() tpl, err := template.ParseFS(templates.Files, "robots.tmpl") if err != nil {@@ -63,7 +62,7 @@ return r, nil } -func renderFeed( +func RenderFeed( title string, config *config.Config, posts []content.Post,@@ -112,30 +111,21 @@ return buf, nil } -func renderFeedStyles(w io.Writer) error { - tpl, err := template.ParseFS(templates.Files, "feed-styles.xsl") - if err != nil { - return err - } - - esc := &strings.Builder{} - err = xml.EscapeText(esc, []byte(templates.CSS)) - +func CopyFile(filename string, w io.Writer) error { + f, err := templates.Files.Open(filename) if err != nil { return err } + defer f.Close() - err = tpl.Execute(w, map[string]interface{}{ - "css": esc.String(), - }) - if err != nil { + if _, err := io.Copy(w, f); err != nil { return err } return nil } -func getFeedStylesHash(r io.Reader) (string, error) { +func GetFeedStyleHash(r io.Reader) (string, error) { doc, err := xmlquery.Parse(r) if err != nil { return "", err@@ -146,15 +136,15 @@ return "", errors.WithMessage(err, "could not parse XPath") } style := xmlquery.QuerySelector(doc, expr) - return hash(style.InnerText()), nil + return Hash(style.InnerText()), nil } -func getHTMLStyleHash(r io.Reader) (string, error) { +func GetHTMLStyleHash(r io.Reader) (string, error) { doc, err := NewDocumentFromReader(r) if err != nil { return "", err } html := doc.Find("head > style").Text() - return hash(html), nil + return Hash(html), nil }