URI: 
       minifiers: Make JSON minification more generic - hugo - [fork] hugo port for 9front
  HTML git clone git@git.drkhsh.at/hugo.git
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
   DIR README
   DIR LICENSE
       ---
   DIR commit 3dafe206e31bb92f27802a04bf9159cbc20af234
   DIR parent 37d6463479952f7dfba59d899eed38b41e223283
  HTML Author: James Kiefer <zinefer@gmail.com>
       Date:   Wed, 12 Sep 2018 11:33:14 -0600
       
       minifiers: Make JSON minification more generic
       
       Add a regex matcher for json types. Specifically support LD+JSON which
       allows for google seo minification out of the box. Expanded JS/JSON
       minification testing.
       Diffstat:
         M minifiers/minifiers.go              |       1 +
         M minifiers/minifiers_test.go         |      46 ++++++++++++++++++++++++++-----
       
       2 files changed, 40 insertions(+), 7 deletions(-)
       ---
   DIR diff --git a/minifiers/minifiers.go b/minifiers/minifiers.go
       @@ -74,6 +74,7 @@ func New(mediaTypes media.Types, outputFormats output.Formats) Client {
                addMinifierFunc(m, mediaTypes, "css", css.Minify)
                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)
                addMinifierFunc(m, mediaTypes, "json", json.Minify)
                addMinifierFunc(m, mediaTypes, "svg", svg.Minify)
                addMinifierFunc(m, mediaTypes, "xml", xml.Minify)
   DIR diff --git a/minifiers/minifiers_test.go b/minifiers/minifiers_test.go
       @@ -28,14 +28,46 @@ func TestNew(t *testing.T) {
                assert := require.New(t)
                m := New(media.DefaultTypes, output.DefaultFormats)
        
       -        var b bytes.Buffer
       +        var rawJS string
       +        var minJS string
       +        rawJS = " var  foo =1 ;   foo ++  ;  "
       +        minJS = "var foo=1;foo++;"
        
       -        assert.NoError(m.Minify(media.CSSType, &b, strings.NewReader("body { color: blue; }")))
       -        assert.Equal("body{color:blue}", b.String())
       +        var rawJSON string
       +        var minJSON string
       +        rawJSON = "  { \"a\" : 123 , \"b\":2,  \"c\": 5 } "
       +        minJSON = "{\"a\":123,\"b\":2,\"c\":5}"
        
       -        b.Reset()
       +        for _, test := range []struct {
       +                tp                media.Type
       +                rawString         string
       +                expectedMinString string
       +        }{
       +                {media.CSSType, " body { color: blue; }  ", "body{color:blue}"},
       +                {media.RSSType, " <hello>  Hugo!   </hello>  ", "<hello>Hugo!</hello>"}, // RSS should be handled as XML
       +                {media.JSONType, rawJSON, minJSON},
       +                {media.JavascriptType, rawJS, minJS},
       +                // JS Regex minifiers
       +                {media.Type{MainType: "application", SubType: "ecmascript"}, rawJS, minJS},
       +                {media.Type{MainType: "application", SubType: "javascript"}, rawJS, minJS},
       +                {media.Type{MainType: "application", SubType: "x-javascript"}, rawJS, minJS},
       +                {media.Type{MainType: "application", SubType: "x-ecmascript"}, rawJS, minJS},
       +                {media.Type{MainType: "text", SubType: "ecmascript"}, rawJS, minJS},
       +                {media.Type{MainType: "text", SubType: "javascript"}, rawJS, minJS},
       +                {media.Type{MainType: "text", SubType: "x-javascript"}, rawJS, minJS},
       +                {media.Type{MainType: "text", SubType: "x-ecmascript"}, rawJS, minJS},
       +                // JSON Regex minifiers
       +                {media.Type{MainType: "application", SubType: "json"}, rawJSON, minJSON},
       +                {media.Type{MainType: "application", SubType: "x-json"}, rawJSON, minJSON},
       +                {media.Type{MainType: "application", SubType: "ld+json"}, rawJSON, minJSON},
       +                {media.Type{MainType: "text", SubType: "json"}, rawJSON, minJSON},
       +                {media.Type{MainType: "text", SubType: "x-json"}, rawJSON, minJSON},
       +                {media.Type{MainType: "text", SubType: "ld+json"}, rawJSON, minJSON},
       +        } {
       +                var b bytes.Buffer
       +
       +                assert.NoError(m.Minify(test.tp, &b, strings.NewReader(test.rawString)))
       +                assert.Equal(test.expectedMinString, b.String())
       +        }
        
       -        // RSS should be handled as XML
       -        assert.NoError(m.Minify(media.RSSType, &b, strings.NewReader("<hello>  Hugo!   </hello>  ")))
       -        assert.Equal("<hello>Hugo!</hello>", b.String())
        }