github.com/geniusesgroup/libgo@v0.0.0-20220713101832-828057a9d3d4/minify/minify.go (about)

     1  /* For license and copyright information please see LEGAL file in repository */
     2  
     3  package minify
     4  
     5  import (
     6  	"regexp"
     7  
     8  	"../protocol"
     9  
    10  	"github.com/tdewolff/minify"
    11  	tcss "github.com/tdewolff/minify/css"
    12  	thtml "github.com/tdewolff/minify/html"
    13  	"github.com/tdewolff/minify/js"
    14  	"github.com/tdewolff/minify/json"
    15  	"github.com/tdewolff/minify/svg"
    16  	"github.com/tdewolff/minify/xml"
    17  )
    18  
    19  var minifier = minify.New()
    20  
    21  func init() {
    22  	minifier.AddFunc("text/css", tcss.Minify)
    23  	minifier.AddFunc("text/html", thtml.Minify)
    24  	minifier.AddFunc("image/svg+xml", svg.Minify)
    25  	minifier.AddFuncRegexp(regexp.MustCompile("^(application|text)/(x-)?(java|ecma)script$"), js.Minify)
    26  	minifier.AddFuncRegexp(regexp.MustCompile("[/+]json$"), json.Minify)
    27  	minifier.AddFuncRegexp(regexp.MustCompile("[/+]xml$"), xml.Minify)
    28  }
    29  
    30  // Minify replace file data with minify of them.
    31  func Minify(data protocol.Codec) (err protocol.Error) {
    32  	var minifiedData, goErr = minifier.Bytes(data.MediaType().MediaType(), data.Marshal())
    33  	if goErr != nil {
    34  		return
    35  	}
    36  	err = data.Unmarshal(minifiedData)
    37  	return
    38  }