ref: be5ace1588e54c2b0081d7c8ad57795b67307cde
parent: e58d8fe7911ed2748fd76ee61ccc8e9b18850086
author: spf13 <[email protected]>
date: Tue Oct 15 05:15:52 EDT 2013
Wordcount restored. fixed #92
--- a/hugolib/page.go
+++ b/hugolib/page.go
@@ -38,7 +38,7 @@
Images []string
Content template.HTML
Summary template.HTML
- RawMarkdown string // TODO should be []byte
+ plain string // TODO should be []byte
Params map[string]interface{}
contentType string
Draft bool
@@ -77,6 +77,13 @@
func (p Pages) Sort() { sort.Sort(p) }
func (p Pages) Limit(n int) Pages { return p[0:n] }
+func (p Page) Plain() string {
+ if len(p.plain) == 0 {
+ p.plain = StripHTML(StripShortcodes(string(p.Content)))
+ }
+ return p.plain
+}
+
func getSummaryString(content []byte, fmt string) []byte {
if bytes.Contains(content, summaryDivider) {
// If user defines split:
@@ -85,8 +92,8 @@
} else {
// If hugo defines split:
// render, strip html, then split
- plainContent := StripHTML(StripShortcodes(string(renderBytes(content, fmt))))
- return []byte(TruncateWordsToWholeSentence(plainContent, summaryLength))
+ plain := StripHTML(StripShortcodes(string(renderBytes(content, fmt))))
+ return []byte(TruncateWordsToWholeSentence(plain, summaryLength))
}
}
@@ -217,7 +224,7 @@
}
func (p *Page) analyzePage() {
- p.WordCount = TotalWords(p.RawMarkdown)
+ p.WordCount = TotalWords(p.Plain())
p.FuzzyWordCount = int((p.WordCount+100)/100) * 100
}
--- a/hugolib/page_test.go
+++ b/hugolib/page_test.go
@@ -127,6 +127,18 @@
Some more text
`
+
+ SIMPLE_PAGE_WITH_LONG_CONTENT = `---
+title: Simple
+---
+Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+`
)
func checkError(t *testing.T, err error, expected string) {
@@ -250,6 +262,21 @@
t.Fatalf("Unable to prase page.")
}
checkPageDate(t, p, d)
+}
+
+func TestWordCount(t *testing.T) {
+ p, err := ReadFrom(strings.NewReader(SIMPLE_PAGE_WITH_LONG_CONTENT), "simple")
+ if err != nil {
+ t.Fatalf("Unable to create a page with frontmatter and body content: %s", err)
+ }
+
+ if p.WordCount != 483 {
+ t.Fatalf("incorrect word count. expected %v, got %v", 483, p.WordCount)
+ }
+
+ if p.FuzzyWordCount != 500 {
+ t.Fatalf("incorrect word count. expected %v, got %v", 500, p.WordCount)
+ }
}
func TestCreatePage(t *testing.T) {