summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAustin Ziegler <austin@zieglers.ca>2014-10-01 14:26:43 -0400
committerspf13 <steve.francia@gmail.com>2014-10-07 16:45:23 -0400
commit9cdd2e54c2a1b724fcba8257956c3981ea0017df (patch)
treec36bf463c493f427dbe2396041c474b36b216f8b
parent603b24a16344b1da485043e8a60b0505ad18cee6 (diff)
Use md5 against the file path for uniqueness.
-rw-r--r--hugolib/page.go20
-rw-r--r--hugolib/shortcode.go2
2 files changed, 17 insertions, 5 deletions
diff --git a/hugolib/page.go b/hugolib/page.go
index 165d3992a..7cd400504 100644
--- a/hugolib/page.go
+++ b/hugolib/page.go
@@ -15,6 +15,8 @@ package hugolib
import (
"bytes"
+ "crypto/md5"
+ "encoding/hex"
"errors"
"fmt"
"html/template"
@@ -62,7 +64,7 @@ type Page struct {
}
type File struct {
- Name, FileName, Extension, Dir string
+ Name, FileName, Extension, Dir, UniqueId string
}
type PageMeta struct {
@@ -94,6 +96,10 @@ func (p *Page) IsPage() bool {
return true
}
+func (p *Page) UniqueId() string {
+ return p.File.UniqueId
+}
+
func (p *Page) setSummary() {
if bytes.Contains(p.rawContent, summaryDivider) {
// If user defines split:
@@ -119,11 +125,11 @@ func bytesToHTML(b []byte) template.HTML {
}
func (p *Page) renderBytes(content []byte) []byte {
- return renderBytes(content, p.guessMarkupType(), p.File.Name)
+ return renderBytes(content, p.guessMarkupType(), p.UniqueId())
}
func (p *Page) renderContent(content []byte) []byte {
- return renderBytesWithTOC(content, p.guessMarkupType(), p.File.Name)
+ return renderBytesWithTOC(content, p.guessMarkupType(), p.UniqueId())
}
func renderBytesWithTOC(content []byte, pagefmt string, footnoteref string) []byte {
@@ -154,7 +160,7 @@ func newPage(filename string) *Page {
name = name[:len(name)-len(filepath.Ext(name))]
page := Page{contentType: "",
- File: File{Name: name, FileName: filename, Extension: "html"},
+ File: File{Name: name, FileName: filename, Extension: "html", UniqueId: md5ForFilename(filename)},
Node: Node{Keywords: []string{}, Sitemap: Sitemap{Priority: -1}},
Params: make(map[string]interface{})}
@@ -804,3 +810,9 @@ func sliceToLower(s []string) []string {
return l
}
+
+func md5ForFilename(f string) string {
+ h := md5.New()
+ h.Write([]byte(f))
+ return hex.EncodeToString(h.Sum([]byte{}))
+}
diff --git a/hugolib/shortcode.go b/hugolib/shortcode.go
index 9f7a335a0..1635ece99 100644
--- a/hugolib/shortcode.go
+++ b/hugolib/shortcode.go
@@ -93,7 +93,7 @@ func ShortcodesHandle(stringToParse string, p *Page, t Template) string {
var data = &ShortcodeWithPage{Params: params, Page: p}
if endStart > 0 {
s := stringToParse[leadEnd+3 : leadEnd+endStart]
- data.Inner = template.HTML(renderBytes([]byte(CleanP(ShortcodesHandle(s, p, t))), p.guessMarkupType(), p.File.Name))
+ data.Inner = template.HTML(renderBytes([]byte(CleanP(ShortcodesHandle(s, p, t))), p.guessMarkupType(), p.UniqueId()))
remainder := CleanP(stringToParse[leadEnd+endEnd:])
return CleanP(stringToParse[:leadStart]) +