From 06da609138475de317e7e5fbf3a0a8c3af3c64e4 Mon Sep 17 00:00:00 2001
From: Noah Campbell <noahcampbell@gmail.com>
Date: Wed, 2 Oct 2013 19:33:51 -0400
Subject: [PATCH] Refactor Permalink to private function

This will allow for reuse of this particular function.
---
 hugolib/page.go | 18 +++++++++++++-----
 hugolib/site.go |  4 ++--
 2 files changed, 15 insertions(+), 7 deletions(-)

diff --git a/hugolib/page.go b/hugolib/page.go
index e9a7d6da..f35b1a5e 100644
--- a/hugolib/page.go
+++ b/hugolib/page.go
@@ -207,7 +207,7 @@ func (p *Page) analyzePage() {
 	p.FuzzyWordCount = int((p.WordCount+100)/100) * 100
 }
 
-func (p *Page) Permalink() (string, error) {
+func (p *Page) permalink() (*url.URL, error) {
 	baseUrl := string(p.Site.BaseUrl)
 	section := strings.TrimSpace(p.Section)
 	pSlug := strings.TrimSpace(p.Slug)
@@ -223,7 +223,7 @@ func (p *Page) Permalink() (string, error) {
 		permalink = pUrl
 	} else {
 		_, t := path.Split(p.FileName)
-		if p.Site.Config.UglyUrls {
+		if p.Site.Config != nil && p.Site.Config.UglyUrls {
 			x := replaceExtension(strings.TrimSpace(t), p.Extension)
 			permalink = section + "/" + x
 		} else {
@@ -234,15 +234,23 @@ func (p *Page) Permalink() (string, error) {
 
 	base, err := url.Parse(baseUrl)
 	if err != nil {
-		return "", err
+		return nil, err
 	}
 
 	path, err := url.Parse(permalink)
 	if err != nil {
-		return "", err
+		return nil, err
 	}
 
-	return MakePermalink(base, path).String(), nil
+	return MakePermalink(base, path), nil
+}
+
+func (p *Page) Permalink() (string, error) {
+	link, err := p.permalink()
+	if err != nil {
+		return "", err
+	}
+	return link.String(), nil
 }
 
 func (page *Page) handleTomlMetaData(datum []byte) (interface{}, error) {
diff --git a/hugolib/site.go b/hugolib/site.go
index 85f0e9d9..3f2f565a 100644
--- a/hugolib/site.go
+++ b/hugolib/site.go
@@ -551,14 +551,14 @@ func (s *Site) render(d interface{}, out string, layouts ...string) (err error)
 	section := ""
 	page, ok := d.(*Page)
 	if ok {
-		section = page.Section
+		section, _ = page.Permalink()
 	}
 
 	fmt.Println("Section is:", section)
 
 	transformer := transform.NewChain(
-		&transform.NavActive{Section: section},
 		&transform.AbsURL{BaseURL: s.Config.BaseUrl},
+		&transform.NavActive{Section: section},
 	)
 
 	renderReader, renderWriter := io.Pipe()
-- 
2.30.2