From d45fb72f675997d11406bce82919f1dc50414d68 Mon Sep 17 00:00:00 2001 From: Noah Campbell Date: Fri, 13 Sep 2013 14:46:34 -0700 Subject: [PATCH] Add /index.html to unadorned alias paths Bring code to be better in line with documentation. --- hugolib/page.go | 22 +++++++++++----------- hugolib/site.go | 6 ++++-- hugolib/site_url_test.go | 12 ++++++------ target/alias_test.go | 6 +++++- target/htmlredirect.go | 16 +++++++++++----- 5 files changed, 37 insertions(+), 25 deletions(-) diff --git a/hugolib/page.go b/hugolib/page.go index 61cc35a8a..ad4851d9e 100644 --- a/hugolib/page.go +++ b/hugolib/page.go @@ -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 diff --git a/hugolib/site.go b/hugolib/site.go index 52690a30b..7c86d4126 100644 --- a/hugolib/site.go +++ b/hugolib/site.go @@ -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 } diff --git a/hugolib/site_url_test.go b/hugolib/site_url_test.go index c5146b92d..6d969fde2 100644 --- a/hugolib/site_url_test.go +++ b/hugolib/site_url_test.go @@ -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) diff --git a/target/alias_test.go b/target/alias_test.go index b25fe84a2..7f5db79af 100644 --- a/target/alias_test.go +++ b/target/alias_test.go @@ -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 { diff --git a/target/htmlredirect.go b/target/htmlredirect.go index 398d3fefa..a2695c6d9 100644 --- a/target/htmlredirect.go +++ b/target/htmlredirect.go @@ -1,15 +1,15 @@ package target import ( - helpers "github.com/spf13/hugo/template" - "path" "bytes" - "strings" + helpers "github.com/spf13/hugo/template" "html/template" + "path" + "strings" ) const ALIAS = "" -const ALIAS_XHTML = "" +const ALIAS_XHTML = "" 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 }