Do not print comments if they are all empty
https://github.com/magiconair/properties/issues/3
diff --git a/properties.go b/properties.go
index 03abec2..33c108c 100644
--- a/properties.go
+++ b/properties.go
@@ -539,21 +539,32 @@
if prefix != "" {
if comments, ok := p.c[key]; ok {
- // add a blank line between entries but not at the top
- if len(comments) > 0 && n > 0 {
- x, err = fmt.Fprintln(w)
- if err != nil {
- return
+ // don't print comments if they are all empty
+ allEmpty := true
+ for _, c := range comments {
+ if c != "" {
+ allEmpty = false
+ break
}
- n += x
}
- for _, c := range comments {
- x, err = fmt.Fprintf(w, "%s%s\n", prefix, encode(c, "", enc))
- if err != nil {
- return
+ if !allEmpty {
+ // add a blank line between entries but not at the top
+ if len(comments) > 0 && n > 0 {
+ x, err = fmt.Fprintln(w)
+ if err != nil {
+ return
+ }
+ n += x
}
- n += x
+
+ for _, c := range comments {
+ x, err = fmt.Fprintf(w, "%s%s\n", prefix, encode(c, "", enc))
+ if err != nil {
+ return
+ }
+ n += x
+ }
}
}
}
diff --git a/properties_test.go b/properties_test.go
index 6f1c5c1..36ff293 100644
--- a/properties_test.go
+++ b/properties_test.go
@@ -116,6 +116,7 @@
comments []string
}{
{"key=value", "key", "value", nil},
+ {"#\nkey=value", "key", "value", []string{""}},
{"#comment\nkey=value", "key", "value", []string{"comment"}},
{"# comment\nkey=value", "key", "value", []string{"comment"}},
{"# comment\nkey=value", "key", "value", []string{"comment"}},
@@ -176,6 +177,8 @@
}{
// ISO-8859-1 tests
{"key = value", "key = value\n", "ISO-8859-1"},
+ {"#\nkey = value", "key = value\n", "ISO-8859-1"},
+ {"#\n#\n#\nkey = value", "key = value\n", "ISO-8859-1"},
{"# comment\nkey = value", "# comment\nkey = value\n", "ISO-8859-1"},
{"\n# comment\nkey = value", "# comment\nkey = value\n", "ISO-8859-1"},
{"# comment\n\nkey = value", "# comment\nkey = value\n", "ISO-8859-1"},
@@ -247,11 +250,11 @@
def, value time.Duration
}{
// valid values
- {"key = -1ns", "key", 999, -1*time.Nanosecond},
- {"key = 300ms", "key", 999, 300*time.Millisecond},
- {"key = 5s", "key", 999, 5*time.Second},
- {"key = 3h", "key", 999, 3*time.Hour},
- {"key = 2h45m", "key", 999, 2*time.Hour+45*time.Minute},
+ {"key = -1ns", "key", 999, -1 * time.Nanosecond},
+ {"key = 300ms", "key", 999, 300 * time.Millisecond},
+ {"key = 5s", "key", 999, 5 * time.Second},
+ {"key = 3h", "key", 999, 3 * time.Hour},
+ {"key = 2h45m", "key", 999, 2*time.Hour + 45*time.Minute},
// invalid values
{"key = 0xff", "key", 999, 999},