minifiers: Fixx CSS2 color code handling
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Fri, 7 Dec 2018 06:49:26 +0000 (07:49 +0100)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Fri, 7 Dec 2018 06:49:26 +0000 (07:49 +0100)
Fixes #5506

minifiers/minifiers.go
minifiers/minifiers_test.go

index 8a9730a73fd995313a10dd75340aaaa22a8e027c..db2251b68852f0d81f499dfe9fdd7587a07461ef 100644 (file)
@@ -71,8 +71,13 @@ func New(mediaTypes media.Types, outputFormats output.Formats) Client {
                KeepDefaultAttrVals:     true,
        }
 
+       cssMin := &css.Minifier{
+               Decimals: -1,
+               KeepCSS2: true,
+       }
+
        // We use the Type definition of the media types defined in the site if found.
-       addMinifierFunc(m, mediaTypes, "css", css.Minify)
+       addMinifier(m, mediaTypes, "css", cssMin)
        addMinifierFunc(m, mediaTypes, "js", js.Minify)
        m.AddFuncRegexp(regexp.MustCompile("^(application|text)/(x-)?(java|ecma)script$"), js.Minify)
        m.AddFuncRegexp(regexp.MustCompile("^(application|text)/(x-|ld\\+)?json$"), json.Minify)
index 6500aa2c23e9d1eb238737d86b90ea07c1471c89..acfa22d2ca55942b89af10db1e5d01e5b69a991c 100644 (file)
@@ -71,3 +71,23 @@ func TestNew(t *testing.T) {
        }
 
 }
+
+func TestBugs(t *testing.T) {
+       assert := require.New(t)
+       m := New(media.DefaultTypes, output.DefaultFormats)
+
+       for _, test := range []struct {
+               tp                media.Type
+               rawString         string
+               expectedMinString string
+       }{
+               // https://github.com/gohugoio/hugo/issues/5506
+               {media.CSSType, " body { color: rgba(000, 000, 000, 0.7); }", "body{color:rgba(0,0,0,.7)}"},
+       } {
+               var b bytes.Buffer
+
+               assert.NoError(m.Minify(test.tp, &b, strings.NewReader(test.rawString)))
+               assert.Equal(test.expectedMinString, b.String())
+       }
+
+}