Commit graph

73 commits

Author SHA1 Message Date
est31 34ef67bee2 Decrease deserialization complexity from quadratic to linear (#349)
* Speed up array code

* Speed up map code too

Also add regression test

* Use more obvious closure notation

* Document the builder functions
2019-10-28 10:05:13 -05:00
est31 52586279ce Support for dotted table spans (#340)
* "Support" spans for maps

In toml you can declare maps via {} and via [name].
We can't obtain spans for [] maps but at least we
can emit fake spans to make SpannedValue work.

We also add a regression test.

* Don't regress the inline table case

* Also support arrays
2019-10-28 09:01:23 -05:00
est31 12db6aa93f Support deserializing spanned keys (#333)
* Store key spans in the deserializer

* Support deserializing spanned keys

* Store key spans of the table header as well

* Support nested table key spans as well
2019-09-16 16:32:45 -05:00
est31 55ca6c5e30 Remove redundant #[doc(hidden)] attributes (#331) 2019-09-09 13:04:47 -05:00
James Kay d083e58357 Nested dotted-table enums (#329)
Add support for deserializing enums from nested dotted tables.
2019-09-05 09:18:26 -05:00
est31 5fef3914cf Suppport deserialization of Spanned<> at the top level (#328) 2019-09-05 08:38:54 -05:00
Erich Gubler 57aea7dfad Make de::Error Eq in addition to current PartialEq (#330)
Not sure why this wasn't implemented before, since `ser::Error` has implemented `PartialEq` and `Eq` as of PR #144.
2019-09-04 18:44:32 -05:00
Eric Huss f822f4661b Allow zero-prefixed float exponents. (#322) 2019-08-23 09:55:15 -07:00
Nick Hackman 9f25cfa17b Fixed Clippy warning of long return type
Created an alias named TablePair being a (Cow<'a, str>, Value<'a>)
2019-08-18 21:07:23 -04:00
Nick Hackman 8b88c96cfc Removed all warnings besides two
Majority of warnings removed via RustFix
Two remain one being a long return type and another being a name
suggestion from Clippy `to_owned` for MaybeString
2019-08-14 23:05:30 -04:00
Eric Huss 514b8ca8f2 Fix error line/column when using CRLF line endings. 2019-08-13 13:48:54 -07:00
Nick Hackman 64e2f4742f Simplified Logic when comparing discriminants
Removed matches that were used to compare Enum variants for equality in
favor of using discriminant from https://doc.rust-lang.org/std/mem/fn.discriminant.html
introduced in Rust 1.21.0
2019-08-13 14:13:01 -04:00
Alex Crichton fd39bc7412 Run cargo fmt 2019-08-12 13:50:59 -07:00
Alex Crichton 59c0d52600 Fix a bad merge 2019-08-12 13:50:44 -07:00
Alex Crichton 7a11ed691a Merge pull request #315 from jwdeitch/master
Allow conversion from de::Error to std::io::error
2019-08-12 15:35:55 -05:00
Alex Crichton 7e8b40b025 Merge pull request #314 from zertosh/add-line-and-col-to-errors
Add line and column to all Errors
2019-08-12 15:35:35 -05:00
Eric Huss 5cb9b37b99 Squelch explicit_outlives_requirements warning. 2019-08-12 09:12:39 -07:00
Jordan Deitch d3eedc52ba convert toml error to std::io error 2019-08-01 20:43:05 -04:00
Andres Suarez b09bb78352 Add line and column to all Errors 2019-07-30 13:35:08 -04:00
Andres Suarez 8c1b49f66f Show "column" in Error messages 2019-07-28 13:41:17 -04:00
Eric Huss 0737f0b27a 2018 edition idioms. 2019-05-08 17:37:38 -07:00
Eric Huss 68fd59c78d Migrate to 2018 edition. 2019-05-08 12:12:14 -07:00
Eric Huss 816b457c84 Fix float with invalid suffix. 2019-04-05 13:51:28 -07:00
Erich Gubler d34e734b39 Fix warnings for deprecated usages of trim_{left,right}_matches. 2019-04-02 09:35:28 -06:00
Abid Omar 861a7be7d4 Add PartialEq to Toml::de
Add PartialEq trait to Error, ErrorInner and ErrorKind.

Relevant issue: https://github.com/alexcrichton/toml-rs/issues/291
2019-03-11 18:38:50 +01:00
Eric Huss b7493c9bef Fix case sensitivity with T, Z, and E. 2019-02-19 10:59:42 -08:00
Alex Crichton 184d16b4a3 Fix disallowing duplicate table headers
This commit fixes #279 where a case of duplicate table headers slipped
through the cracks. This also adds an option to disable this new
validation to allow Cargo to preserve backwards compatibility.
2019-01-07 09:06:04 -08:00
Alex Crichton cbfc4e18f8 Run cargo fmt 2018-12-17 17:45:35 -08:00
Alex Crichton 7845df9ff9 Merge pull request #264 from azriel91/feature/225/externally-tagged-enums
Issue 255: Externally tagged enum deserialization
2018-11-28 09:50:38 -06:00
Eric Huss b21dd8cf05 Fix trailing space after date.
The space between date and time was being eagerly skipped when it shouldn't.
2018-11-21 09:35:50 -08:00
Azriel Hoh cd6373a9ab Maintain backward compatibility with Rust 1.15, take 3. 2018-11-17 14:19:14 +13:00
Azriel Hoh 752bf0d4a1 Only validate table keys against fields when deserializing enum.
Issue #225
2018-11-17 13:37:24 +13:00
Azriel Hoh 5bcf6f7cb6 Maintain compatibility with Rust 1.15
Issue #225
2018-11-17 13:36:38 +13:00
Azriel Hoh 1656e2e51d Error when deserializing struct if encountering unknown fields.
Issue #225
2018-11-12 10:09:30 +13:00
Azriel Hoh a0295b3308 Maintain compatibility with Rust 1.15
Issue #225
2018-11-10 11:10:34 +13:00
Azriel Hoh a4928a47a8 Implemented deserialization for external enums.
Issue #225
2018-11-10 11:10:31 +13:00
Azriel Hoh 7777c1452f Better error handling when parsing tuples.
Issue #225
2018-11-10 11:07:26 +13:00
Azriel Hoh 4f28c2f639 Implemented enum tuple deserialization.
Issue #225
2018-11-10 11:07:23 +13:00
Azriel Hoh f5d14af5a6 Implement deserialization for unit and struct variants.
Issue #225
2018-11-10 11:06:34 +13:00
rhysd 935d95ce4f Fix multi-line strings are not allowed for key
In spec https://github.com/toml-lang/toml#keys

Quoted keys are clarified as

> he exact same rules as either basic strings or literal strings

TOML clearly distinguishes basic string and multi-line basic string
(literal string is also).

https://github.com/toml-lang/toml#string

So table key and quoted key should not allow multi-line basic string
and multi-line literal string.

ABNF definition also describes that.

https://github.com/toml-lang/toml/blob/master/toml.abnf

```
string = ml-basic-string / basic-string / ml-literal-string / literal-string

quoted-key = basic-string / literal-string
```

`string` contains `ml-*` but `quoted-key` doesn't.
2018-09-25 16:33:52 +09:00
Eric Huss fad5f4690e Don't allow intermixing inline tables and dotted key tables. 2018-07-27 11:49:30 -07:00
Eric Huss e0a820be2f Support older rustc. 2018-07-16 09:10:38 -07:00
Eric Huss 6d76b19b58 0.5: Support dotted keys.
cc #224
2018-07-16 09:10:38 -07:00
Eric Huss c8919e8ed1 0.5: Support hex/oct/bin integers.
cc #224
2018-07-11 09:21:29 -07:00
Alex Crichton 625d2a18bb Merge pull request #251 from ehuss/datetime-space
0.5: Support space separator in datetime.
2018-07-11 09:05:26 -05:00
Eric Huss 16d8b14fcf 0.5: Support floats nan, inf, and +/-0.0.
cc #224
2018-07-11 00:50:04 -07:00
Eric Huss 5204d8b50a 0.5: Support space separate in datetime.
cc #224
2018-07-10 17:14:16 -07:00
John-John Tedro 407845d620 Fix incorrectly reported spans for Datetime 2018-05-07 05:36:41 +02:00
John-John Tedro 8a9ae07de5 Use BorrowedStrDeserializer instead of generated key deserializers 2018-05-07 04:57:16 +02:00
John-John Tedro 09c8957ae7 Adjust spans for more complex types 2018-05-07 04:28:00 +02:00