diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2016-08-08 00:34:04 +0300 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2016-09-06 18:32:18 +0300 |
commit | 0a7d1d0ddc213628fcde7c0e24991246836d9f16 (patch) | |
tree | 8bf4cedba4ceaea3c21802a6f93e0fd6f946a3e2 /hugolib | |
parent | d18a8cbe15ad0d52fe8cd720906ef108a56d24bf (diff) |
Fix some corner cases in revised summary handling
And clean up the test.
See #2309
Diffstat (limited to 'hugolib')
-rw-r--r-- | hugolib/page.go | 16 | ||||
-rw-r--r-- | hugolib/page_test.go | 33 |
2 files changed, 17 insertions, 32 deletions
diff --git a/hugolib/page.go b/hugolib/page.go index 99aa0db16..da9fa4f87 100644 --- a/hugolib/page.go +++ b/hugolib/page.go @@ -246,6 +246,7 @@ type summaryContent struct { } func splitUserDefinedSummaryAndContent(markup string, c []byte) *summaryContent { + c = bytes.TrimSpace(c) startDivider := bytes.Index(c, internalSummaryDivider) if startDivider == -1 { @@ -276,20 +277,27 @@ func splitUserDefinedSummaryAndContent(markup string, c []byte) *summaryContent } // Find the closest end/start markup string to the divider - //firstStart := bytes.Index(c[:startDivider], startMarkup) fromIdx := bytes.LastIndex(c[:startDivider], startMarkup) fromStart := startDivider - fromIdx - len(startMarkup) fromEnd := bytes.Index(c[endDivider:], endMarkup) if fromEnd != -1 && fromEnd <= fromStart { endSummary = startDivider + fromEnd + len(endMarkup) - } else if fromStart != -1 { + } else if fromStart != -1 && fromEnd != -1 { endSummary = startDivider - fromStart - len(startMarkup) } withoutDivider := bytes.TrimSpace(append(c[:startDivider], c[endDivider:]...)) - contentWithoutSummary := bytes.TrimSpace(withoutDivider[endSummary:]) - summary := bytes.TrimSpace(withoutDivider[:endSummary]) + + var ( + contentWithoutSummary []byte + summary []byte + ) + + if len(withoutDivider) > 0 { + contentWithoutSummary = bytes.TrimSpace(withoutDivider[endSummary:]) + summary = bytes.TrimSpace(withoutDivider[:endSummary]) + } if addDiv { // For the rst diff --git a/hugolib/page_test.go b/hugolib/page_test.go index da46151ed..641e421b3 100644 --- a/hugolib/page_test.go +++ b/hugolib/page_test.go @@ -655,6 +655,11 @@ func TestSplitSummaryAndContent(t *testing.T) { {"markdown", "<p>a</p><p>b</p><p>cHUGOMORE42</p>", "<p>a</p><p>b</p><p>c</p>", "<p>a</p><p>b</p><p>c</p>", ""}, {"markdown", "<p>a</p><p>bHUGOMORE42</p><p>c</p>", "<p>a</p><p>b</p>", "<p>a</p><p>b</p><p>c</p>", "<p>c</p>"}, {"markdown", "<p>aHUGOMORE42</p><p>b</p><p>c</p>", "<p>a</p>", "<p>a</p><p>b</p><p>c</p>", "<p>b</p><p>c</p>"}, + {"markdown", " HUGOMORE42 ", "", "", ""}, + {"markdown", "HUGOMORE42", "", "", ""}, + {"markdown", "<p>HUGOMORE42", "<p>", "<p>", ""}, + {"markdown", "HUGOMORE42<p>", "", "<p>", "<p>"}, + {"markdown", "\n\n<p>HUGOMORE42</p>\n", "<p></p>", "<p></p>", ""}, } { sc := splitUserDefinedSummaryAndContent(this.markup, []byte(this.content)) @@ -664,34 +669,6 @@ func TestSplitSummaryAndContent(t *testing.T) { require.Equal(t, this.expectedContent, string(sc.content), fmt.Sprintf("[%d] Content markup %s", i, this.markup)) require.Equal(t, this.expectedContentWithoutSummary, string(sc.contentWithoutSummary), fmt.Sprintf("[%d] Content without summary, markup %s", i, this.markup)) } - - if true { - return - } - - ad := `<div class="paragraph"><p>sn</p></div> -<div class="paragraph"> -<p>HUGOMORE42 -Some more text</p> -</div> -` - - md := `<p>Summary Same LineHUGOMORE42</p> - -<p>Some more text</p>` - - sc := splitUserDefinedSummaryAndContent("markdown", []byte(md)) - - require.Equal(t, "adf", string(sc.summary)) - require.Equal(t, "asdf", string(sc.content)) - - if true { - return - } - sc = splitUserDefinedSummaryAndContent("asciidoc", []byte(ad)) - require.Equal(t, "<div class=\"paragraph\"><p>sn</p></div>", string(sc.summary)) - require.Equal(t, "\n<div class=\"paragraph\">\n<p> \nSome more text</p>\n</div>\n", string(sc.summary)) - } func TestPageWithDelimiter(t *testing.T) { |