| commit | 3ddb37c9445773dd46f5c17f1d7769114899b4f9 | [log] [tgz] |
|---|---|---|
| author | Thomas Pelletier <pelletier.thomas@gmail.com> | Wed Nov 23 15:48:39 2016 +0100 |
| committer | GitHub <noreply@github.com> | Wed Nov 23 15:48:39 2016 +0100 |
| tree | f2164f7e5730ad6e4917d0da95e9d97170081099 | |
| parent | f7f14983c3ad4a70e2d6d3e56dce12c8e6a4a62c [diff] |
Fix []*Toml.Tree being wrapped in *Toml.Value (#110) Nodes can be either *Toml.Tree, []*Toml.Tree, or *Toml.Value. Arrays of trees were incorrectly wrapped in a *Toml.Value, making the conversion functions think they were leaf nodes.
Go library for the TOML format.
This library supports TOML version v0.4.0
Go-toml provides the following features for using data parsed from TOML documents:
Go-toml is designed to help cover use-cases not covered by reflection-based TOML parsing:
import "github.com/pelletier/go-toml"
Say you have a TOML file that looks like this:
[postgres] user = "pelletier" password = "mypassword"
Read the username and password like this:
import ( "fmt" "github.com/pelletier/go-toml" ) config, err := toml.LoadFile("config.toml") if err != nil { fmt.Println("Error ", err.Error()) } else { // retrieve data directly user := config.Get("postgres.user").(string) password := config.Get("postgres.password").(string) // or using an intermediate object configTree := config.Get("postgres").(*toml.TomlTree) user = configTree.Get("user").(string) password = configTree.Get("password").(string) fmt.Println("User is ", user, ". Password is ", password) // show where elements are in the file fmt.Println("User position: %v", configTree.GetPosition("user")) fmt.Println("Password position: %v", configTree.GetPosition("password")) // 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) } }
The documentation and additional examples are available at godoc.org.
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/tomjson tomljson --help
Feel free to report bugs and patches using GitHub's pull requests system on pelletier/go-toml. Any feedback would be much appreciated!
You have to make sure two kind of tests run:
You can run both of them using ./test.sh.
The MIT License (MIT). Read LICENSE.