hugo

Unnamed repository; edit this file 'description' to name the repository.

git clone git://git.shimmy1996.com/hugo.git
commit 20c4311df4e61edb449ec93837cdde96a700b879
parent 81f04ef4f0acf518e78846d4d15c07c531a08546
Author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Date:   Sat, 20 Aug 2016 20:28:38 +0100

Switch to a more up to date TOML library

Fixes #2089

Diffstat:
Mcommands/new.go | 2+-
Mhugolib/menu_test.go | 9+++++----
Mparser/frontmatter.go | 24+++++++++++++-----------
3 files changed, 19 insertions(+), 16 deletions(-)
diff --git a/commands/new.go b/commands/new.go
@@ -317,7 +317,7 @@ func newContentPathSection(path string) (string, string) {
 }
 
 func createConfig(inpath string, kind string) (err error) {
-	in := map[string]string{
+	in := map[string]interface{}{
 		"baseurl":      "http://replace-this-with-your-hugo-site.com/",
 		"title":        "My New Hugo Site",
 		"languageCode": "en-us",
diff --git a/hugolib/menu_test.go b/hugolib/menu_test.go
@@ -20,7 +20,7 @@ import (
 
 	"path/filepath"
 
-	"github.com/BurntSushi/toml"
+	toml "github.com/pelletier/go-toml"
 	"github.com/spf13/hugo/hugofs"
 	"github.com/spf13/hugo/source"
 	"github.com/spf13/viper"
@@ -701,11 +701,12 @@ func testSiteSetup(s *Site, t *testing.T) {
 }
 
 func tomlToMap(s string) (map[string]interface{}, error) {
-	var data = make(map[string]interface{})
-	if _, err := toml.Decode(s, &data); err != nil {
+	tree, err := toml.Load(s)
+
+	if err != nil {
 		return nil, err
 	}
 
-	return data, nil
+	return tree.ToMap(), nil
 
 }
diff --git a/parser/frontmatter.go b/parser/frontmatter.go
@@ -19,7 +19,8 @@ import (
 	"fmt"
 	"strings"
 
-	"github.com/BurntSushi/toml"
+	toml "github.com/pelletier/go-toml"
+
 	"gopkg.in/yaml.v2"
 )
 
@@ -49,11 +50,8 @@ func InterfaceToConfig(in interface{}, mark rune) ([]byte, error) {
 		}
 		return b.Bytes(), nil
 	case rune(TOMLLead[0]):
-		err := toml.NewEncoder(b).Encode(in)
-		if err != nil {
-			return nil, err
-		}
-		return b.Bytes(), nil
+		tree := toml.TreeFromMap(in.(map[string]interface{}))
+		return []byte(tree.String()), nil
 	case rune(JSONLead[0]):
 		by, err := json.MarshalIndent(in, "", "   ")
 		if err != nil {
@@ -99,10 +97,8 @@ func InterfaceToFrontMatter(in interface{}, mark rune) ([]byte, error) {
 			return nil, err
 		}
 
-		err = toml.NewEncoder(b).Encode(in)
-		if err != nil {
-			return nil, err
-		}
+		tree := toml.TreeFromMap(in.(map[string]interface{}))
+		b.Write([]byte(tree.String()))
 		_, err = b.Write([]byte("\n" + TOMLDelimUnix))
 		if err != nil {
 			return nil, err
@@ -166,9 +162,15 @@ func DetectFrontMatter(mark rune) (f *frontmatterType) {
 func HandleTOMLMetaData(datum []byte) (interface{}, error) {
 	m := map[string]interface{}{}
 	datum = removeTOMLIdentifier(datum)
-	if _, err := toml.Decode(string(datum), &m); err != nil {
+
+	tree, err := toml.Load(string(datum))
+
+	if err != nil {
 		return m, err
 	}
+
+	m = tree.ToMap()
+
 	return m, nil
 }