• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

.github/ISSUE_TEMPLATE/H17-May-2020-

cmd/H17-May-2020-

query/H17-May-2020-

.dockerignoreH A D17-May-202038

.gitignoreH A D17-May-2020102

CONTRIBUTING.mdH A D17-May-20204.9 KiB

DockerfileH A D17-May-2020319

LICENSEH A D17-May-20201.1 KiB

MakefileH A D17-May-2020631

PULL_REQUEST_TEMPLATE.mdH A D17-May-2020203

README.mdH A D17-May-20204.2 KiB

azure-pipelines.ymlH A D17-May-20205.9 KiB

benchmark.jsonH A D17-May-20203.6 KiB

benchmark.shH A D17-May-2020829

benchmark.tomlH A D17-May-20205.1 KiB

benchmark.ymlH A D17-May-20201.9 KiB

benchmark_test.goH A D17-May-20203 KiB

doc.goH A D17-May-2020789

doc_test.goH A D17-May-20203.5 KiB

example-crlf.tomlH A D17-May-2020730

example.tomlH A D17-May-2020701

fuzz.goH A D17-May-2020472

fuzz.shH A D17-May-2020291

fuzzit.shH A D17-May-2020990

go.modH A D17-May-2020153

go.sumH A D17-May-20201.5 KiB

keysparsing.goH A D17-May-20202.4 KiB

keysparsing_test.goH A D17-May-20202.1 KiB

lexer.goH A D17-May-202015.7 KiB

lexer_test.goH A D17-May-202029.5 KiB

localtime.goH A D17-May-20209.7 KiB

localtime_test.goH A D17-May-202012.4 KiB

marshal.goH A D17-May-202034.4 KiB

marshal_OrderPreserve_test.tomlH A D17-May-2020622

marshal_test.goH A D17-May-202089.1 KiB

marshal_test.tomlH A D17-May-2020622

parser.goH A D17-May-202011.8 KiB

parser_test.goH A D17-May-202027.9 KiB

position.goH A D17-May-2020744

position_test.goH A D17-May-2020454

token.goH A D17-May-20201.9 KiB

token_test.goH A D17-May-20201.6 KiB

toml.goH A D17-May-202010.2 KiB

toml_test.goH A D17-May-20203.7 KiB

toml_testgen_support_test.goH A D17-May-20203 KiB

toml_testgen_test.goH A D17-May-202021.6 KiB

tomltree_create.goH A D17-May-20204 KiB

tomltree_create_test.goH A D17-May-20203.3 KiB

tomltree_write.goH A D17-May-202012.6 KiB

tomltree_write_test.goH A D17-May-20209.7 KiB

README.md

1# go-toml
2
3Go library for the [TOML](https://github.com/mojombo/toml) format.
4
5This library supports TOML version
6[v1.0.0-rc.1](https://github.com/toml-lang/toml/blob/master/versions/en/toml-v1.0.0-rc.1.md)
7
8[![GoDoc](https://godoc.org/github.com/pelletier/go-toml?status.svg)](http://godoc.org/github.com/pelletier/go-toml)
9[![license](https://img.shields.io/github/license/pelletier/go-toml.svg)](https://github.com/pelletier/go-toml/blob/master/LICENSE)
10[![Build Status](https://dev.azure.com/pelletierthomas/go-toml-ci/_apis/build/status/pelletier.go-toml?branchName=master)](https://dev.azure.com/pelletierthomas/go-toml-ci/_build/latest?definitionId=1&branchName=master)
11[![codecov](https://codecov.io/gh/pelletier/go-toml/branch/master/graph/badge.svg)](https://codecov.io/gh/pelletier/go-toml)
12[![Go Report Card](https://goreportcard.com/badge/github.com/pelletier/go-toml)](https://goreportcard.com/report/github.com/pelletier/go-toml)
13[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fpelletier%2Fgo-toml.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2Fpelletier%2Fgo-toml?ref=badge_shield)
14
15## Features
16
17Go-toml provides the following features for using data parsed from TOML documents:
18
19* Load TOML documents from files and string data
20* Easily navigate TOML structure using Tree
21* Marshaling and unmarshaling to and from data structures
22* Line & column position data for all parsed elements
23* [Query support similar to JSON-Path](query/)
24* Syntax errors contain line and column numbers
25
26## Import
27
28```go
29import "github.com/pelletier/go-toml"
30```
31
32## Usage example
33
34Read a TOML document:
35
36```go
37config, _ := toml.Load(`
38[postgres]
39user = "pelletier"
40password = "mypassword"`)
41// retrieve data directly
42user := config.Get("postgres.user").(string)
43
44// or using an intermediate object
45postgresConfig := config.Get("postgres").(*toml.Tree)
46password := postgresConfig.Get("password").(string)
47```
48
49Or use Unmarshal:
50
51```go
52type Postgres struct {
53    User     string
54    Password string
55}
56type Config struct {
57    Postgres Postgres
58}
59
60doc := []byte(`
61[Postgres]
62User = "pelletier"
63Password = "mypassword"`)
64
65config := Config{}
66toml.Unmarshal(doc, &config)
67fmt.Println("user=", config.Postgres.User)
68```
69
70Or use a query:
71
72```go
73// use a query to gather elements without walking the tree
74q, _ := query.Compile("$..[user,password]")
75results := q.Execute(config)
76for ii, item := range results.Values() {
77    fmt.Printf("Query result %d: %v\n", ii, item)
78}
79```
80
81## Documentation
82
83The documentation and additional examples are available at
84[godoc.org](http://godoc.org/github.com/pelletier/go-toml).
85
86## Tools
87
88Go-toml provides two handy command line tools:
89
90* `tomll`: Reads TOML files and lints them.
91
92    ```
93    go install github.com/pelletier/go-toml/cmd/tomll
94    tomll --help
95    ```
96* `tomljson`: Reads a TOML file and outputs its JSON representation.
97
98    ```
99    go install github.com/pelletier/go-toml/cmd/tomljson
100    tomljson --help
101    ```
102
103 * `jsontoml`: Reads a JSON file and outputs a TOML representation.
104
105    ```
106    go install github.com/pelletier/go-toml/cmd/jsontoml
107    jsontoml --help
108    ```
109
110### Docker image
111
112Those tools are also availble as a Docker image from
113[dockerhub](https://hub.docker.com/r/pelletier/go-toml). For example, to
114use `tomljson`:
115
116```
117docker run -v $PWD:/workdir pelletier/go-toml tomljson /workdir/example.toml
118```
119
120Only master (`latest`) and tagged versions are published to dockerhub. You
121can build your own image as usual:
122
123```
124docker build -t go-toml .
125```
126
127## Contribute
128
129Feel free to report bugs and patches using GitHub's pull requests system on
130[pelletier/go-toml](https://github.com/pelletier/go-toml). Any feedback would be
131much appreciated!
132
133### Run tests
134
135`go test ./...`
136
137### Fuzzing
138
139The script `./fuzz.sh` is available to
140run [go-fuzz](https://github.com/dvyukov/go-fuzz) on go-toml.
141
142## Versioning
143
144Go-toml follows [Semantic Versioning](http://semver.org/). The supported version
145of [TOML](https://github.com/toml-lang/toml) is indicated at the beginning of
146this document. The last two major versions of Go are supported
147(see [Go Release Policy](https://golang.org/doc/devel/release.html#policy)).
148
149## License
150
151The MIT License (MIT). Read [LICENSE](LICENSE).
152