shithub: hugo

Download patch

ref: d45fb72f675997d11406bce82919f1dc50414d68
parent: 803a0fce1ef3f2f42ed649a489ae381586445886
author: Noah Campbell <[email protected]>
date: Fri Sep 13 10:46:34 EDT 2013

Add /index.html to unadorned alias paths

Bring code to be better in line with documentation.

--- a/hugolib/page.go
+++ b/hugolib/page.go
@@ -34,17 +34,17 @@
 )
 
 type Page struct {
-	Status          string
-	Images          []string
-	Content         template.HTML
-	Summary         template.HTML
-	RawMarkdown     string // TODO should be []byte
-	Params          map[string]interface{}
-	contentType     string
-	Draft           bool
-	Aliases         []string
-	Tmpl            bundle.Template
-	Markup          string
+	Status      string
+	Images      []string
+	Content     template.HTML
+	Summary     template.HTML
+	RawMarkdown string // TODO should be []byte
+	Params      map[string]interface{}
+	contentType string
+	Draft       bool
+	Aliases     []string
+	Tmpl        bundle.Template
+	Markup      string
 	PageMeta
 	File
 	Position
--- a/hugolib/site.go
+++ b/hugolib/site.go
@@ -145,7 +145,9 @@
 }
 
 func (s *Site) Render() (err error) {
-	s.RenderAliases()
+	if err = s.RenderAliases(); err != nil {
+		return
+	}
 	s.timerStep("render and write aliases")
 	s.ProcessShortcodes()
 	s.timerStep("render shortcodes")
@@ -161,7 +163,7 @@
 	if err = s.RenderPages(); err != nil {
 		return
 	}
-	s.timerStep("render pages")
+	s.timerStep("render and write pages")
 	if err = s.RenderHomePage(); err != nil {
 		return
 	}
--- a/hugolib/site_url_test.go
+++ b/hugolib/site_url_test.go
@@ -2,13 +2,13 @@
 
 import (
 	"bytes"
+	"github.com/spf13/hugo/target"
+	"html/template"
 	"io"
 	"testing"
-	"html/template"
-	"github.com/spf13/hugo/target"
 )
 
-const SLUG_DOC_1 = "---\ntitle: slug doc 1\nslug: slug-doc-1\naliases:\n - sd1/foo/\n - sd2\n - sd3/\n - sd4.php\n---\nslug doc 1 content"
+const SLUG_DOC_1 = "---\ntitle: slug doc 1\nslug: slug-doc-1\naliases:\n - sd1/foo/\n - sd2\n - sd3/\n - sd4.html\n---\nslug doc 1 content"
 
 //const SLUG_DOC_1 = "---\ntitle: slug doc 1\nslug: slug-doc-1\n---\nslug doc 1 content"
 const SLUG_DOC_2 = "---\ntitle: slug doc 2\nslug: slug-doc-2\n---\nslug doc 2 content"
@@ -68,7 +68,7 @@
 	alias := &InMemoryAliasTarget{files: files}
 	s := &Site{
 		Target: target,
-		Alias: alias,
+		Alias:  alias,
 		Config: Config{UglyUrls: false},
 		Source: &inMemorySource{urlFakeSource},
 	}
@@ -102,9 +102,9 @@
 
 	for _, s := range []string{
 		"sd1/foo/index.html",
-		"sd2",
+		"sd2/index.html",
 		"sd3/index.html",
-		"sd4.php",
+		"sd4.html",
 	} {
 		if _, ok := target.files[s]; !ok {
 			t.Errorf("No alias rendered: %s", s)
--- a/target/alias_test.go
+++ b/target/alias_test.go
@@ -13,9 +13,13 @@
 		expected string
 	}{
 		{"", ""},
-		{"alias 1", "alias-1"},
+		{"s", "s/index.html"},
+		{"/", "/index.html"},
+		{"alias 1", "alias-1/index.html"},
 		{"alias 2/", "alias-2/index.html"},
 		{"alias 3.html", "alias-3.html"},
+		{"alias4.html", "alias4.html"},
+		{"/alias 5.html", "/alias-5.html"},
 	}
 
 	for _, test := range tests {
--- a/target/htmlredirect.go
+++ b/target/htmlredirect.go
@@ -1,15 +1,15 @@
 package target
 
 import (
+	"bytes"
 	helpers "github.com/spf13/hugo/template"
+	"html/template"
 	"path"
-	"bytes"
 	"strings"
-	"html/template"
 )
 
 const ALIAS = "<!DOCTYPE html><html><head><link rel=\"canonical\" href=\"{{ .Permalink }}\"/><meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" /><meta http-equiv=\"refresh\" content=\"0;url={{ .Permalink }}\" /></head></html>"
-const	ALIAS_XHTML = "<!DOCTYPE html><html xmlns=\"http://www.w3.org/1999/xhtml\"><head><link rel=\"canonical\" href=\"{{ .Permalink }}\"/><meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" /><meta http-equiv=\"refresh\" content=\"0;url={{ .Permalink }}\" /></head></html>"
+const ALIAS_XHTML = "<!DOCTYPE html><html xmlns=\"http://www.w3.org/1999/xhtml\"><head><link rel=\"canonical\" href=\"{{ .Permalink }}\"/><meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" /><meta http-equiv=\"refresh\" content=\"0;url={{ .Permalink }}\" /></head></html>"
 
 var DefaultAliasTemplates *template.Template
 
@@ -26,12 +26,18 @@
 
 type HTMLRedirectAlias struct {
 	PublishDir string
-	Templates *template.Template
+	Templates  *template.Template
 }
 
 func (h *HTMLRedirectAlias) Translate(alias string) (aliasPath string, err error) {
+	if len(alias) <= 0 {
+		return
+	}
+
 	if strings.HasSuffix(alias, "/") {
 		alias = alias + "index.html"
+	} else if !strings.HasSuffix(alias, ".html") {
+		alias = alias + "/index.html"
 	}
 	return path.Join(h.PublishDir, helpers.Urlize(alias)), nil
 }