GoBlog/minify.go

40 lines
1016 B
Go
Raw Normal View History

2020-07-31 14:23:29 +00:00
package main
import (
"io"
"sync"
2020-07-31 14:23:29 +00:00
"github.com/tdewolff/minify/v2"
2020-10-07 15:35:52 +00:00
mCss "github.com/tdewolff/minify/v2/css"
mHtml "github.com/tdewolff/minify/v2/html"
mJs "github.com/tdewolff/minify/v2/js"
mJson "github.com/tdewolff/minify/v2/json"
mXml "github.com/tdewolff/minify/v2/xml"
2020-07-31 14:23:29 +00:00
)
var (
initMinify sync.Once
minifier *minify.M
)
2020-07-31 14:23:29 +00:00
func getMinifier() *minify.M {
initMinify.Do(func() {
minifier = minify.New()
minifier.AddFunc(contentTypeHTML, mHtml.Minify)
minifier.AddFunc("text/css", mCss.Minify)
minifier.AddFunc(contentTypeXML, mXml.Minify)
minifier.AddFunc("application/javascript", mJs.Minify)
minifier.AddFunc(contentTypeRSS, mXml.Minify)
minifier.AddFunc(contentTypeATOM, mXml.Minify)
minifier.AddFunc(contentTypeJSONFeed, mJson.Minify)
minifier.AddFunc(contentTypeAS, mJson.Minify)
})
return minifier
}
func writeMinified(w io.Writer, mediatype string, b []byte) (int, error) {
mw := getMinifier().Writer(mediatype, w)
defer func() { _ = mw.Close() }()
return mw.Write(b)
2020-07-31 14:23:29 +00:00
}