132 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			132 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # go-toml
 | |
| 
 | |
| Go library for the [TOML](https://github.com/mojombo/toml) format.
 | |
| 
 | |
| This library supports TOML version
 | |
| [v0.4.0](https://github.com/toml-lang/toml/blob/master/versions/en/toml-v0.4.0.md)
 | |
| 
 | |
| [](http://godoc.org/github.com/pelletier/go-toml)
 | |
| [](https://github.com/pelletier/go-toml/blob/master/LICENSE)
 | |
| [](https://travis-ci.org/pelletier/go-toml)
 | |
| [](https://coveralls.io/github/pelletier/go-toml?branch=master)
 | |
| [](https://goreportcard.com/report/github.com/pelletier/go-toml)
 | |
| 
 | |
| ## 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](query/)
 | |
| * Syntax errors contain line and column numbers
 | |
| 
 | |
| ## Import
 | |
| 
 | |
| ```go
 | |
| import "github.com/pelletier/go-toml"
 | |
| ```
 | |
| 
 | |
| ## Usage example
 | |
| 
 | |
| Read a TOML document:
 | |
| 
 | |
| ```go
 | |
| config, _ := toml.Load(`
 | |
| [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:
 | |
| 
 | |
| ```go
 | |
| type Postgres struct {
 | |
|     User     string
 | |
|     Password string
 | |
| }
 | |
| type Config struct {
 | |
|     Postgres Postgres
 | |
| }
 | |
| 
 | |
| doc := []byte(`
 | |
| [Postgres]
 | |
| User = "pelletier"
 | |
| Password = "mypassword"`)
 | |
| 
 | |
| config := Config{}
 | |
| toml.Unmarshal(doc, &config)
 | |
| fmt.Println("user=", config.Postgres.User)
 | |
| ```
 | |
| 
 | |
| Or use a query:
 | |
| 
 | |
| ```go
 | |
| // use a query to gather elements without walking the tree
 | |
| q, _ := query.Compile("$..[user,password]")
 | |
| results := q.Execute(config)
 | |
| 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](http://godoc.org/github.com/pelletier/go-toml).
 | |
| 
 | |
| ## 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](https://github.com/pelletier/go-toml). Any feedback would be
 | |
| much appreciated!
 | |
| 
 | |
| ### Run tests
 | |
| 
 | |
| You have to make sure two kind of tests run:
 | |
| 
 | |
| 1. The Go unit tests
 | |
| 2. The TOML examples base
 | |
| 
 | |
| You can run both of them using `./test.sh`.
 | |
| 
 | |
| ### Fuzzing
 | |
| 
 | |
| The script `./fuzz.sh` is available to
 | |
| run [go-fuzz](https://github.com/dvyukov/go-fuzz) on go-toml.
 | |
| 
 | |
| ## Versioning
 | |
| 
 | |
| Go-toml follows [Semantic Versioning](http://semver.org/). The supported version
 | |
| of [TOML](https://github.com/toml-lang/toml) is indicated at the beginning of
 | |
| this document. The last two major versions of Go are supported
 | |
| (see [Go Release Policy](https://golang.org/doc/devel/release.html#policy)).
 | |
| 
 | |
| ## License
 | |
| 
 | |
| The MIT License (MIT). Read [LICENSE](LICENSE).
 |