ref: 0907a5c1c293755e6bf297246f07888448d81f8b
parent: 3d9c4f513b0443648d7e88995e351df1739646d2
author: Bjørn Erik Pedersen <[email protected]>
date: Wed May 31 09:10:46 EDT 2017
all: Temporarily revert to BurntSushi for TOML front matter handling We still have go-toml as a transitive dependency, and it is the way to go eventually, but we care about speed, so let us wait that one out. Note that the issue this fixes is about taxonomies, but I guess this is a general issue for sites with many pages that uses TOML as front matter. ``` benchmark old ns/op new ns/op delta BenchmarkFrontmatterTags/TOML:1-4 23206 8543 -63.19% BenchmarkFrontmatterTags/TOML:11-4 80117 18495 -76.92% BenchmarkFrontmatterTags/TOML:21-4 140676 28727 -79.58% benchmark old allocs new allocs delta BenchmarkFrontmatterTags/TOML:1-4 173 60 -65.32% BenchmarkFrontmatterTags/TOML:11-4 625 138 -77.92% BenchmarkFrontmatterTags/TOML:21-4 1106 210 -81.01% benchmark old bytes new bytes delta BenchmarkFrontmatterTags/TOML:1-4 9231 2912 -68.45% BenchmarkFrontmatterTags/TOML:11-4 19808 5184 -73.83% BenchmarkFrontmatterTags/TOML:21-4 31200 7536 -75.85% ``` See #3541 Updates #3464
--- a/commands/new.go
+++ b/commands/new.go
@@ -355,7 +355,7 @@
}
func createConfig(fs *hugofs.Fs, inpath string, kind string) (err error) {
- in := map[string]interface{}{
+ in := map[string]string{
"baseURL": "http://example.org/",
"title": "My New Hugo Site",
"languageCode": "en-us",
--- a/hugolib/menu_old_test.go
+++ b/hugolib/menu_old_test.go
@@ -25,7 +25,7 @@
"path/filepath"
- toml "github.com/pelletier/go-toml"
+ "github.com/BurntSushi/toml"
"github.com/spf13/hugo/source"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
@@ -634,12 +634,7 @@
}
func tomlToMap(s string) (map[string]interface{}, error) {
- tree, err := toml.Load(s)
-
- if err != nil {
- return nil, err
- }
-
- return tree.ToMap(), nil
-
+ var data = make(map[string]interface{})
+ _, err := toml.Decode(s, &data)
+ return data, err
}
--- a/parser/frontmatter.go
+++ b/parser/frontmatter.go
@@ -20,8 +20,8 @@
"io"
"strings"
+ "github.com/BurntSushi/toml"
"github.com/chaseadamsio/goorgeous"
- toml "github.com/pelletier/go-toml"
"gopkg.in/yaml.v2"
)
@@ -52,13 +52,7 @@
return err
case rune(TOMLLead[0]):
- tree, err := toml.TreeFromMap(in.(map[string]interface{}))
- if err != nil {
- return err
- }
-
- _, err = tree.WriteTo(w)
- return err
+ return toml.NewEncoder(w).Encode(in)
case rune(JSONLead[0]):
b, err := json.MarshalIndent(in, "", " ")
if err != nil {
@@ -176,14 +170,10 @@
m := map[string]interface{}{}
datum = removeTOMLIdentifier(datum)
- tree, err := toml.LoadReader(bytes.NewReader(datum))
- if err != nil {
- return m, err
- }
+ _, err := toml.Decode(string(datum), &m)
- m = tree.ToMap()
+ return m, err
- return m, nil
}
// removeTOMLIdentifier removes, if necessary, beginning and ending TOML