Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/gohugoio/hugo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2016-08-08 00:34:04 +0300
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2016-09-06 18:32:18 +0300
commit0a7d1d0ddc213628fcde7c0e24991246836d9f16 (patch)
tree8bf4cedba4ceaea3c21802a6f93e0fd6f946a3e2 /hugolib
parentd18a8cbe15ad0d52fe8cd720906ef108a56d24bf (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.go16
-rw-r--r--hugolib/page_test.go33
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) {