Wordcount restored. fixed #92 - hugo - [fork] hugo port for 9front
HTML git clone git@git.drkhsh.at/hugo.git
DIR Log
DIR Files
DIR Refs
DIR Submodules
DIR README
DIR LICENSE
---
DIR commit be5ace1588e54c2b0081d7c8ad57795b67307cde
DIR parent e58d8fe7911ed2748fd76ee61ccc8e9b18850086
HTML Author: spf13 <steve.francia@gmail.com>
Date: Tue, 15 Oct 2013 09:15:52 -0400
Wordcount restored. fixed #92
Diffstat:
M hugolib/page.go | 15 +++++++++++----
M hugolib/page_test.go | 27 +++++++++++++++++++++++++++
2 files changed, 38 insertions(+), 4 deletions(-)
---
DIR diff --git a/hugolib/page.go b/hugolib/page.go
@@ -38,7 +38,7 @@ type Page struct {
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) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
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 @@ func getSummaryString(content []byte, fmt string) []byte {
} 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 ReadFrom(buf io.Reader, name string) (page *Page, err error) {
}
func (p *Page) analyzePage() {
- p.WordCount = TotalWords(p.RawMarkdown)
+ p.WordCount = TotalWords(p.Plain())
p.FuzzyWordCount = int((p.WordCount+100)/100) * 100
}
DIR diff --git a/hugolib/page_test.go b/hugolib/page_test.go
@@ -127,6 +127,18 @@ Summary Same Line<!--more-->
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) {
@@ -252,6 +264,21 @@ func TestPageWithDate(t *testing.T) {
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) {
var tests = []struct {
r string