69d355db5304c0f7f809a2edc054553e7142f016
* Use []token instead of chan token name old time/op new time/op delta ParseToml-8 1.18ms ± 0% 0.91ms ± 0% -22.98% UnmarshalToml-8 1.29ms ± 0% 0.95ms ± 0% -25.96% name old alloc/op new alloc/op delta ParseToml-8 429kB ± 0% 444kB ± 0% +3.49% UnmarshalToml-8 451kB ± 0% 466kB ± 0% +3.32% name old allocs/op new allocs/op delta ParseToml-8 14.1k ± 0% 13.7k ± 0% -2.31% UnmarshalToml-8 15.1k ± 0% 14.7k ± 0% -2.16% * Lex on []byte instead of io.Reader name old time/op new time/op delta ParseToml-8 1.18ms ± 0% 0.29ms ± 0% -75.18% UnmarshalToml-8 1.27ms ± 0% 0.38ms ± 0% -70.38% name old alloc/op new alloc/op delta ParseToml-8 429kB ± 0% 135kB ± 0% -68.53% UnmarshalToml-8 451kB ± 0% 157kB ± 0% -65.22% name old allocs/op new allocs/op delta ParseToml-8 14.1k ± 0% 3.2k ± 0% -77.20% UnmarshalToml-8 15.1k ± 0% 4.2k ± 0% -72.00%
go-toml
Go library for the TOML format.
This library supports TOML version v0.4.0
Features
Go-toml provides the following features for using data parsed from TOML documents:
- Load TOML documents from files and string data
- Easily navigate TOML structure using Tree
- Mashaling and unmarshaling to and from data structures
- Line & column position data for all parsed elements
- Query support similar to JSON-Path
- Syntax errors contain line and column numbers
Import
import "github.com/pelletier/go-toml"
Usage example
Read a TOML document:
config, _ := toml.LoadString(`
[postgres]
user = "pelletier"
password = "mypassword"`)
// retrieve data directly
user := config.Get("postgres.user").(string)
// or using an intermediate object
postgresConfig := config.Get("postgres").(*toml.Tree)
password = postgresConfig.Get("password").(string)
Or use Unmarshal:
type Postgres struct {
User string
Password string
}
type Config struct {
Postgres Postgres
}
doc := []byte(`
[postgres]
user = "pelletier"
password = "mypassword"`)
config := Config{}
Unmarshal(doc, &config)
fmt.Println("user=", config.Postgres.User)
Or use a query:
// use a query to gather elements without walking the tree
results, _ := config.Query("$..[user,password]")
for ii, item := range results.Values() {
fmt.Println("Query result %d: %v", ii, item)
}
Documentation
The documentation and additional examples are available at godoc.org.
Tools
Go-toml provides two handy command line tools:
-
tomll: Reads TOML files and lint them.go install github.com/pelletier/go-toml/cmd/tomll tomll --help -
tomljson: Reads a TOML file and outputs its JSON representation.go install github.com/pelletier/go-toml/cmd/tomljson tomljson --help
Contribute
Feel free to report bugs and patches using GitHub's pull requests system on pelletier/go-toml. Any feedback would be much appreciated!
Run tests
You have to make sure two kind of tests run:
- The Go unit tests
- The TOML examples base
You can run both of them using ./test.sh.
License
The MIT License (MIT). Read LICENSE.
Description
Languages
Go
94.6%
Shell
5.4%