Skip to content

Commit

Permalink
all: Temporarily revert to BurntSushi for TOML front matter handling
Browse files Browse the repository at this point in the history
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
  • Loading branch information
bep committed Jun 3, 2017
1 parent 3d9c4f5 commit 0907a5c
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 24 deletions.
2 changes: 1 addition & 1 deletion commands/new.go
Original file line number Diff line number Diff line change
Expand Up @@ -355,7 +355,7 @@ func newContentPathSection(path string) (string, string) {
}

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",
Expand Down
13 changes: 4 additions & 9 deletions hugolib/menu_old_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import (

"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"
Expand Down Expand Up @@ -634,12 +634,7 @@ func setupMenuTests(t *testing.T, pageSources []source.ByteSource, configKeyValu
}

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
}
18 changes: 4 additions & 14 deletions parser/frontmatter.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ import (
"io"
"strings"

"github.com/BurntSushi/toml"
"github.com/chaseadamsio/goorgeous"
toml "github.com/pelletier/go-toml"

"gopkg.in/yaml.v2"
)
Expand Down Expand Up @@ -52,13 +52,7 @@ func InterfaceToConfig(in interface{}, mark rune, w io.Writer) error {
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 {
Expand Down Expand Up @@ -176,14 +170,10 @@ func HandleTOMLMetaData(datum []byte) (interface{}, error) {
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
Expand Down

0 comments on commit 0907a5c

Please sign in to comment.