diff --git a/rss/item.go b/rss/item.go index 136b64c..69fd0aa 100755 --- a/rss/item.go +++ b/rss/item.go @@ -95,7 +95,11 @@ func (i *Item) Load(key, ns1 string, ns ...string) error { if err != nil { return err } - return config.Decode(b, i) + err = config.Decode(b, i) + if err == nil { + i.Content = clearBlankLines(i.Content) + } + return err } func (is Items) Len() int { @@ -113,8 +117,10 @@ func (is Items) Swap(i, j int) { } func clearBlankLines(s string) string { - r := regexp.MustCompile(`(?m)^\s*
\s*$`) - s = r.ReplaceAllLiteralString(s, "") + r := regexp.MustCompile(`
`) + s = r.ReplaceAllLiteralString(s, "
") + r = regexp.MustCompile(`(?m)
\s*(
\s*)*`) + s = r.ReplaceAllLiteralString(s, "
") r = regexp.MustCompile(`(?m)\s\s*`) return r.ReplaceAllLiteralString(s, "\n") } diff --git a/rss/item_test.go b/rss/item_test.go index 6a94b26..7e30f2b 100755 --- a/rss/item_test.go +++ b/rss/item_test.go @@ -92,15 +92,61 @@ func TestClearBlankLines(t *testing.T) {


+

+

`, - outLines: 8, + outLines: 1, + }, + "sample content": { + in: ` +Linux +Blog +




















+















+Programming
+Blog

Jeremy +Morgan

Mostly +Coherent +Ramblings +of +a +Silicon +Forest +Software +Developer




+
+

+
+
+
+

+


+
+
+

+
+
+
+

Trying +Out + `, + outLines: 6, }, } for name, c := range cases { out := clearBlankLines(c.in) - if v := len(strings.Split(out, "\n")); v != c.outLines { + cnts := []int{ + strings.Count(out, "
"), + strings.Count(out, "
"), + } + if v := cnts[0] + cnts[1]; v != c.outLines { t.Errorf("%v: want %v lines, got %v from %q: %q", name, c.outLines, v, c.in, out) } }