Add /index.html to unadorned alias paths
authorNoah Campbell <noahcampbell@gmail.com>
Fri, 13 Sep 2013 21:46:34 +0000 (14:46 -0700)
committerNoah Campbell <noahcampbell@gmail.com>
Fri, 13 Sep 2013 21:51:28 +0000 (14:51 -0700)
Bring code to be better in line with documentation.

hugolib/page.go
hugolib/site.go
hugolib/site_url_test.go
target/alias_test.go
target/htmlredirect.go

index 61cc35a8aa179df33ea054298c42c58023f3cc84..ad4851d9e3eab21cfa8b04bbf451c0e667844d8b 100644 (file)
@@ -34,17 +34,17 @@ import (
 )
 
 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
index 52690a30b3daea909be3373fb3a84bbf8e6b78b6..7c86d4126ea7a0e1e75c9919bda7fce16c98bae5 100644 (file)
@@ -145,7 +145,9 @@ func (s *Site) Process() (err error) {
 }
 
 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 @@ func (s *Site) Render() (err error) {
        if err = s.RenderPages(); err != nil {
                return
        }
-       s.timerStep("render pages")
+       s.timerStep("render and write pages")
        if err = s.RenderHomePage(); err != nil {
                return
        }
index c5146b92dbe9449cedf38b7054fd12c65cb416a1..6d969fde22f444603fb8c7239da339cc359ace37 100644 (file)
@@ -2,13 +2,13 @@ package hugolib
 
 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 @@ func TestPageCount(t *testing.T) {
        alias := &InMemoryAliasTarget{files: files}
        s := &Site{
                Target: target,
-               Alias: alias,
+               Alias:  alias,
                Config: Config{UglyUrls: false},
                Source: &inMemorySource{urlFakeSource},
        }
@@ -102,9 +102,9 @@ func TestPageCount(t *testing.T) {
 
        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)
index b25fe84a2b07d50bb02a2c09cf51c92d1839b6ce..7f5db79af2b5898adb61b4349512f070930c3876 100644 (file)
@@ -13,9 +13,13 @@ func TestHTMLRedirectAlias(t *testing.T) {
                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 {
index 398d3fefa1da56b9379704bcda196ad2cfd3b428..a2695c6d9a3e1ddb011a8782ddb6a9f78bb91fc2 100644 (file)
@@ -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 AliasPublisher interface {
 
 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
 }