Wordcount restored. fixed #92
authorspf13 <steve.francia@gmail.com>
Tue, 15 Oct 2013 13:15:52 +0000 (09:15 -0400)
committerspf13 <steve.francia@gmail.com>
Tue, 15 Oct 2013 13:15:52 +0000 (09:15 -0400)
hugolib/page.go
hugolib/page_test.go

index 6734dcccd7242e92b880d355f86c759e6dec3f10..8e05ba8f9bc36f626b1a471db57d07e1ca9a3d28 100644 (file)
@@ -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
 }
 
index 4832cc4f39d40568992e37e8d537c6a5fa61dcd0..b0b844c8d125645881509547c7adcd43c35dcb27 100644 (file)
@@ -126,6 +126,18 @@ title: Simple
 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.
 `
 )
 
@@ -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