aboutsummaryrefslogtreecommitdiffhomepage
path: root/minifiers
diff options
context:
space:
mode:
Diffstat (limited to 'minifiers')
-rw-r--r--minifiers/config.go40
-rw-r--r--minifiers/config_test.go42
-rw-r--r--minifiers/minifiers_test.go14
3 files changed, 80 insertions, 16 deletions
diff --git a/minifiers/config.go b/minifiers/config.go
index 8ebcaa5c9..1ebbd1e05 100644
--- a/minifiers/config.go
+++ b/minifiers/config.go
@@ -28,11 +28,11 @@ import (
var defaultTdewolffConfig = TdewolffConfig{
HTML: html.Minifier{
- KeepDocumentTags: true,
- KeepConditionalComments: true,
- KeepEndTags: true,
- KeepDefaultAttrVals: true,
- KeepWhitespace: false,
+ KeepDocumentTags: true,
+ KeepSpecialComments: true,
+ KeepEndTags: true,
+ KeepDefaultAttrVals: true,
+ KeepWhitespace: false,
},
CSS: css.Minifier{
Precision: 0,
@@ -90,17 +90,39 @@ func DecodeConfig(v any) (conf MinifyConfig, err error) {
// Handle upstream renames.
if td, found := m["tdewolff"]; found {
tdm := maps.ToStringMap(td)
+
for _, key := range []string{"css", "svg"} {
if v, found := tdm[key]; found {
vm := maps.ToStringMap(v)
- if vv, found := vm["decimal"]; found {
- vvi := cast.ToInt(vv)
- if vvi > 0 {
- vm["precision"] = vvi
+ ko := "decimal"
+ kn := "precision"
+ if vv, found := vm[ko]; found {
+ if _, found = vm[kn]; !found {
+ vvi := cast.ToInt(vv)
+ if vvi > 0 {
+ vm[kn] = vvi
+ }
}
+ delete(vm, ko)
+ }
+ }
+ }
+
+ // keepConditionalComments was renamed to keepSpecialComments
+ if v, found := tdm["html"]; found {
+ vm := maps.ToStringMap(v)
+ ko := "keepconditionalcomments"
+ kn := "keepspecialcomments"
+ if vv, found := vm[ko]; found {
+ // Set keepspecialcomments, if not already set
+ if _, found := vm[kn]; !found {
+ vm[kn] = cast.ToBool(vv)
}
+ // Remove the old key to prevent deprecation warnings
+ delete(vm, ko)
}
}
+
}
err = mapstructure.WeakDecode(m, &conf)
diff --git a/minifiers/config_test.go b/minifiers/config_test.go
index 7169d3fce..9dc20c655 100644
--- a/minifiers/config_test.go
+++ b/minifiers/config_test.go
@@ -59,3 +59,45 @@ func TestConfigLegacy(t *testing.T) {
conf := testconfig.GetTestConfigs(nil, v).Base.Minify
c.Assert(conf.MinifyOutput, qt.Equals, true)
}
+
+func TestConfigNewCommentOptions(t *testing.T) {
+ c := qt.New(t)
+ v := config.New()
+
+ // setting the old options should automatically set the new options
+ v.Set("minify", map[string]any{
+ "tdewolff": map[string]any{
+ "html": map[string]any{
+ "keepConditionalComments": false,
+ },
+ "svg": map[string]any{
+ "decimal": "5",
+ },
+ },
+ })
+
+ conf := testconfig.GetTestConfigs(nil, v).Base.Minify
+
+ c.Assert(conf.Tdewolff.HTML.KeepSpecialComments, qt.Equals, false)
+ c.Assert(conf.Tdewolff.SVG.Precision, qt.Equals, 5)
+
+ // the new values should win, regardless of the contents of the old values
+ v = config.New()
+ v.Set("minify", map[string]any{
+ "tdewolff": map[string]any{
+ "html": map[string]any{
+ "keepConditionalComments": false,
+ "keepSpecialComments": true,
+ },
+ "svg": map[string]any{
+ "decimal": "5",
+ "precision": "10",
+ },
+ },
+ })
+
+ conf = testconfig.GetTestConfigs(nil, v).Base.Minify
+
+ c.Assert(conf.Tdewolff.HTML.KeepSpecialComments, qt.Equals, true)
+ c.Assert(conf.Tdewolff.SVG.Precision, qt.Equals, 10)
+}
diff --git a/minifiers/minifiers_test.go b/minifiers/minifiers_test.go
index 4d5d9feb5..af1b5d996 100644
--- a/minifiers/minifiers_test.go
+++ b/minifiers/minifiers_test.go
@@ -203,13 +203,13 @@ func TestDecodeConfigKeepWhitespace(t *testing.T) {
c.Assert(conf.Tdewolff.HTML, qt.DeepEquals,
html.Minifier{
- KeepComments: false,
- KeepConditionalComments: true,
- KeepDefaultAttrVals: true,
- KeepDocumentTags: true,
- KeepEndTags: false,
- KeepQuotes: false,
- KeepWhitespace: false},
+ KeepComments: false,
+ KeepSpecialComments: true,
+ KeepDefaultAttrVals: true,
+ KeepDocumentTags: true,
+ KeepEndTags: false,
+ KeepQuotes: false,
+ KeepWhitespace: false},
)
}