Commit Graph

305 Commits

Author SHA1 Message Date
Brent DeSpain 63909f0a90 Option to keep fields ordered when marshal struct (#266)
Adds a new `Order()` option to preserve order of struct fields when
marshaling.
v1.3.0
2019-04-02 09:47:51 -07:00
Thomas Pelletier f9070d3b40 Use go mod (#265) 2019-03-21 17:22:05 -07:00
Thomas Pelletier 405d48dc28 Port toml-test to pure Go (#264)
* Port toml-test to pure Go

This change basically ports the toml-test examples test suite to pure
Go. This removes the snowflake test.sh required to run such tests, and
allows us to the example tests on any platform (which includes Windows
as part of the pull-request testing).

* Allow CircleCI failure for go tip
2019-03-20 00:23:14 -07:00
Thomas Pelletier 690ec00a4b Circleci (#262)
Implement CircleCI as an alternative for Travis.
2019-03-12 21:57:14 -07:00
Thomas Pelletier bef2d19cb0 Go 1.12 (#261) 2019-03-05 20:19:32 -08:00
Thomas Pelletier e1803f96f6 Support dotted-keys (#260)
Implement dotted keys as sequence of bare and quoted keys. Introduced in
TOML 0.5.0.
Fixes #230
2019-03-04 22:35:03 -08:00
Thomas Pelletier d9a27b8052 Provide "default" tag for unmarshal (#259)
When a struct is unmarshalled, go-toml now looks at the `default` tag to
provide a default value in case the key is not present in the TOML
document. This is only implemented for string, bool, int, int64,
float64. Additional types can be further implemented on a request-basis.
2019-03-01 17:18:23 -08:00
David Poncelow ad2aec1dcc Delete function to Tree (#256)
Adds delete* functions to the tree so that keys can be removed programatically.
2019-03-01 14:25:52 -08:00
Thomas Pelletier 489c49b1b4 Add CONTRIBUTING document (#258)
Fixes #180
2019-03-01 13:26:01 -08:00
Thomas Pelletier 27c6b39a13 Fossa badge 2018-11-23 16:27:27 -08:00
Thomas Pelletier 539dd095b3 Support byte order mark (#253)
Fixes #250
2018-11-23 19:15:58 -05:00
Thomas Pelletier b56e1b27b4 Update Go version in Appveyor (#246) 2018-11-19 11:27:10 -05:00
Andriy Senyshyn 19cbd226da Allow to marshal pointer to struct and map (#247) 2018-11-19 10:31:15 -05:00
Tom Wambold 0a1666a81f Map camelCased keys to fields in structs (#251)
The name for each field in a struct is used to look up a key in the TOML
tree.  A few different (case-sensitive) forms of this name are tried.
Previously, the current, lower-cased, and title-cased versions of the
name are tried.  This precludes camelCased keys from mapping back to
fields in structs.  This change adds camelCase to the set of keys to
try.

For example, the following TOML:

  fooBar = 10

Would previously *not* map to the following struct:

  type Foo struct {
    FooBar int
  }

This change corrects this.
2018-11-19 10:29:38 -05:00
Andriy Senyshyn aa79e12a97 Support time.duration (#248) 2018-11-12 09:02:56 -08:00
Veselkov Konstantin 81a861c69d Fix typeSwitchVar warnings (#243)
Fixes #242
2018-09-30 13:58:32 -07:00
xiehuc 78b76feda6 Fix integer keys in inline tables (#239)
Fixes #224
2018-09-22 11:02:51 -07:00
Andriy Senyshyn 90d6f96e9e Allow to change default tags for Decoder and Encoder (#241)
Decoder: allow to customize default field name tag "toml" on decoding.
Example:
```
type doc struct {
    title `file:"header"`
}
```

Encoder: allow to customize tags for encoding struct to toml.
Example:
```
type doc struct {
    title `file:"header" description:"document title"`
}
```

Fixes #238
2018-09-21 09:41:11 -07:00
Jayi e33f654429 fix panic when type unmatch between toml and struct (#236) 2018-09-17 21:16:20 -07:00
Karthik K 4edab6691b Travis check for golang 1.11 (#240) 2018-09-17 21:05:06 -07:00
Thomas Pelletier c2dbbc24a9 Add Codecov badge to README 2018-07-24 11:51:02 -07:00
Thomas Pelletier 14d3ac30da Setup Codecov (#235) 2018-07-24 11:27:17 -07:00
Thomas Pelletier 5c5490133d Create PULL_REQUEST_TEMPLATE.md 2018-07-18 17:16:04 -07:00
Thomas Pelletier 216c9ec838 Update issue templates 2018-07-18 17:08:05 -07:00
Thomas Pelletier a295f02a64 AppVeyor Windows build (#234)
Fixes #229
2018-07-18 16:44:55 -07:00
Thomas Pelletier dbe63ccdd0 Pin toml-test version (#233)
Their latest master has tests for features of TOML 0.5.0 that are not
yet supported by go-toml.

Fixes #228.
2018-07-18 16:15:26 -07:00
Yang Luo 603baefff9 Fix path not found message on Windows (#227) 2018-07-03 11:33:37 -07:00
Alan Murtagh c01d1270ff Multiline Marshal tag (#221)
The new multiline tag works just like the existing 'commented' tag (i.e.
`multiline:"true"`), and tells go-toml to marshal the value as a
multi-line string. The tag currently has no impact on any non-string
fields.
v1.2.0
2018-06-05 13:47:19 -07:00
Cameron Moore 66540cf1fc Go 1.10 support (#223)
* Update Travis CI to use latest Go releases

* Fix go vet issues for Go 1.10

Starting in Go 1.10, the `go test` command now automatically runs `go
vet`. This commit fixes two issues flagged by vet that cause `go test`
to fail.

* Fix gofmt issue for Go 1.10

Go 1.10 introduced a small formatting change with comments in empty
multiline slice definitions.  This commit attempts to move the offending
comment in such a way that all version of gofmt will agree on its
location.

* Remove go-vet from test.sh

Starting in Go 1.10, the `go test` command automatically runs `go vet`,
so we don't need to run `go vet` explicitly from within test.sh.

Fixes #222
2018-03-23 11:52:43 -07:00
Chris 05bcc0fb0d Make multi-line arrays always use trailing commas (#217)
This makes ArraysWithOneElementPerLine output arrays with commas after every element.

```
A = [1,2,3]
```

Now becomes:

```
A = [
  1,
  2,
  3,
]
```
2018-02-28 15:36:31 -08:00
Thomas Pelletier acdc450948 Fix backward incompatibility for Set* methods (#213)
Patch #185 introduced a backward incompatibility by changing the arguments
of the `Set*` methods on `Tree`.

This change restores the arguments to what they previous were, and
introduces `SetWithComment` and `SetPathWithComment` to perform the same
action.
v1.1.0
2018-01-18 14:54:55 -08:00
Jelte Fennema 778c285afa Add support for special float values (inf and nan) (#210) 2018-01-18 14:10:55 -08:00
Jelte Fennema a1e8a8d702 Unmarshal into custom types and error on overflows (#209)
This fixes two unmarshalling issues:

1. Unmarshalling into a custom integer/float type (e.g. `time.Duration`).
2. Checks for overflows happen before unmarshalling, erroring if an overflow
would happen.

Apart from this it also reduces code duplication a bit.
2018-01-18 14:08:34 -08:00
Jelte Fennema 03c6bf4172 Actually show the error message from an Error token (#208) 2018-01-18 14:03:34 -08:00
Thomas Pelletier a1b12e18b7 Fix false positive when running test.sh (#212)
Patch #193 introduced a regression in the toml-tests examples, but it was
never caught because test.sh was exiting with a zero status code, even
though the tests failed. This is because of the `|tee` operation when
invoking toml-test, without setting the pipefail option, reporting the
status code of `tee` instead of `toml-test`.
2018-01-18 14:02:09 -08:00
Kazuyoshi Kato 4874e8477b Fix parsing of single quoted keys (#201)
Patch #193 doesn't work correctly because that must be handled by the
lexer, and `parseKey()` must not handle escape sequences.

Ref #61
2018-01-18 13:52:12 -08:00
Thomas Pelletier 9bf0212445 Bump go versions (#211) 2018-01-15 16:08:35 -08:00
Thomas Pelletier 0131db6d73 Lint (#206) 2017-12-22 12:45:48 +01:00
Thomas Pelletier 861c4734ac Support for hex, oct, and bin integers (#205)
Add support for non-decimal integers. At the time of writing, this is an
unreleased backward-compatible feature of TOML:

```
  Non-negative integer values may also be expressed in hexadecimal, octal, or
  binary. In these formats, leading zeros are allowed (after the prefix). Hex
  values are case insensitive. Underscores are allowed between digits (but
  not between the prefix and the value).

  # hexadecimal with prefix `0x`
  hex1 = 0xDEADBEEF
  hex2 = 0xdeadbeef
  hex3 = 0xdead_beef

  # octal with prefix `0o`
  oct1 = 0o01234567
  oct2 = 0o755 # useful for Unix file permissions

  # binary with prefix `0b`
  bin1 = 0b11010110
```

Fixes #204
2017-12-22 12:24:26 +01:00
Thomas Pelletier b8b5e76965 Add Encoder opt to emit arrays on multiple lines (#203)
A new Encoder option emits arrays with more than one line on multiple lines.
This is off by default and toggled with `ArraysWithOneElementPerLine`.

For example:

```
A = [1,2,3]
```

Becomes:

```
A = [
  1,
  2,
  3
]
```

Fixes #200
2017-12-18 14:57:16 +01:00
Robert Günzler 4e9e0ee19b Add Encoder/Decoder types (#192)
Usage is similar to the stdlibs JSON encoder/decoder but I tried to
leave the general structure of the code the same.

Main motivation was to support encoding/decoding options to allow
encoding string-type map keys as quoted TOML keys.
This was implemented on the Encoder with QuoteMapKeys(bool).

> The TOML spec supports using UTF-8 strings as keys.
> https://github.com/toml-lang/toml/blob/master/versions/en/toml-v0.4.0.md#table
2017-10-24 14:10:38 -07:00
Thomas Pelletier 8c31c2ec65 Fix fuzz (#199)
Fix fuzzer (LoadString does not exist), and mention it in the README.
2017-10-21 19:23:38 -07:00
Thomas Pelletier 6d858869d3 Describe versioning policy in README (#198) 2017-10-21 19:08:12 -07:00
Kazuyoshi Kato 1916042ba2 Add fuzz.sh to do fuzzing with go-fuzz (#194)
Fixes #181
2017-10-21 16:37:53 -07:00
Kazuyoshi Kato a410399d2c Support single quoted keys (#193)
Fixes #61
2017-10-21 23:14:36 +00:00
Kazuyoshi Kato 878c11e70e Unmarshal should report a type mismatch as an error (#196)
Fixes #186
2017-10-21 15:29:03 -07:00
Kazuyoshi Kato 19ece5dc77 Fix typos (#195)
Most of them are caught by Go Report Card.
https://goreportcard.com/report/github.com/pelletier/go-toml
2017-10-21 15:26:06 -07:00
Maxime Le Conte des Floris d01db88be9 Fix example code in README (#197) 2017-10-21 15:24:36 -07:00
Thomas Pelletier 2009e44b6f Improve doc for un/marshal functions (#189) 2017-10-01 15:47:47 -07:00
Yvonnick Esnault 690dbc9ee7 Comment annotation for Marshal (#185) 2017-10-01 15:05:24 -07:00