Commit graph

183 commits

Author SHA1 Message Date
Alex Crichton e256931e9b Rewrite crate with serde support from ground up
This commit completely rewrites this crate from the ground up,
supporting serde at the lowest levels as I believe serde support was
intended to do. This is a major change from the previous versions of
this crate, with a summary of changes being:

* Serialization directly to TOML is now supported without going through
  a `Value` first.

* Deserialization directly from TOML is now supported without going
  through a `Value`. Note that due to the TOML format some values still
  are buffered in intermediate memory, but overall this should be at a
  minimum now.

* The API of `Value` was overhauled to match the API of
  `serde_json::Value`. The changes here were to:

  * Add `is_*` accessors
  * Add `get` and `get_mut` for one-field lookups.
  * Implement panicking lookups through `Index`

  The old `index` methods are now gone in favor of `get` and `Index`
  implementations.

* A `Datetime` type has been added to represent a TOML datetime in a
  first-class fashion. Currently this type provides no accessors other
  than a `Display` implementation, but the idea is that this will grow
  support over time for decomposing the date.

* Support for the `rustc-serialize` crate has been dropped, that'll stay
  on the 0.2 and 0.1 release trains.

* This crate no longer supports the detection of unused fields, for that though
  you can use the `serde_ignored` crate on crates.io
2017-02-08 21:21:18 -08:00
Alex Crichton 0dc5347946 Clarify that serde is supported
Closes #122
2017-01-09 17:37:05 -08:00
Alex Crichton 5907e0a7d0 Return encoding errors for NaN and infinite
TOML can't actually represent them, so we should bail out.

Closes #125
2016-12-30 17:40:40 -08:00
Alex Crichton f66b9913f9 Escape control characters when encoding strings
Closes #126
2016-12-30 17:34:11 -08:00
nabijaczleweli 594b845b5a Don't space out the first table or array if not needed
Closes #110
2016-09-06 09:01:06 +02:00
Vinzent Steinberg 2299cb3744 Fix a typo 2016-08-16 23:41:53 +02:00
Alex Crichton 4ee9cb72e6 Touch up the encoder/decoder a bit
* Whitespace things
* Don't make `State` public
* Remove `#[cfg]` annotations
2016-07-29 10:23:06 -07:00
David Tolnay c17b75f834 Restore defaulted Deserializer methods 2016-07-29 00:55:52 -07:00
David Tolnay 242b8038a1 Cfg off functions only needed for rustc-serialize or serde 2016-07-28 11:09:50 -07:00
David Tolnay 492690669e Update to serde 0.8.0 2016-07-28 11:09:40 -07:00
Oliver Schneider c7d96b191e next iteration 2016-07-15 16:24:26 +02:00
Oliver Schneider 183646b118 adjust for seq/map ser revamp 2016-07-14 15:28:51 +02:00
Alex Crichton fb8050d2d5 Merge pull request #101 from leodasvacas/clippy-run
Clippy run and implement Default for State and Enconder
2016-06-05 07:46:17 +02:00
leonardo.yvens e8097b14f1 Clippy run 2016-06-03 23:19:15 -03:00
Alex Crichton 7363dbe7f5 Merge pull request #103 from MarkSwanson/lookup-lifetime-enhancement
lookup() and lookup_mut() lifetime enhancements.
2016-06-01 12:36:30 -07:00
Alex Crichton 6f43fc3b29 Fix serde tests on nightly 2016-05-31 10:41:47 -07:00
Mark Swanson 3639e62a3b Rely on lifetime elision. 2016-05-31 10:20:43 -04:00
Mark Swanson 010e34f637 lookup() and lookup_mut() lifetime enhancements.
Rationale:

- The path has nothing to do with the result.
- The path has no need to live as long as the Value/self.
- In some cases it can be hard to actually build a path that meets
  the same lifetime requirements as the Value or String slice result.
2016-05-30 16:09:40 -04:00
Alex Crichton 44fc9d9f37 Require newlines to be present after keys
Closes #100
2016-05-22 23:30:43 -07:00
James Sanderson dd7e31ea53 Refactor checking for EOF into method 2016-05-19 01:12:58 +01:00
James Sanderson 112adaaa3f Accept empty table on last line 2016-05-19 01:09:33 +01:00
James Sanderson 6450da87ba Failing test for empty table on last line 2016-05-19 00:54:54 +01:00
Alex Crichton b9280519cc Fix accepting comments after table definitions 2016-05-16 10:17:51 -07:00
Alex Crichton c777001598 Accept fractional seconds and timezones in datetime parsing
Closes #96
2016-05-12 14:07:34 -07:00
Alex Crichton 1ed6801137 Add option to enable old behavior
Cargo will use this in the interim.
2016-05-12 11:28:32 -07:00
James Sanderson 848227c605 Require a newline after table definition 2016-04-17 22:51:43 +01:00
Tae-il Lim 6426b02d3d Use different method to ensure unicode escape code is ASCII of expected length 2016-04-05 11:13:36 +09:00
Bourgond Aries 644dc88c04 Add a bunch of negative and positive tests 2016-03-28 06:35:39 +02:00
Bourgond Aries 33c49d0357 Leverage fn array_index to fn integer 2016-03-28 06:24:25 +02:00
Bourgond Aries 568dd2ef4b Fix the indentation to be consistent with the repository 2016-03-27 21:19:03 +02:00
Bourgond Aries 442f663c2d Add advanced lookup for table names 2016-03-27 20:55:49 +02:00
Bourgond Aries 770052a9a7 Add a test for lookup_mut_advanced 2016-03-27 20:50:25 +02:00
Bourgond Aries 0e3e0654ba Implement advanced key lookup for lookup_mut 2016-03-27 20:48:23 +02:00
Bourgond Aries 3517215eab Implement a more advanced algorithm for lookup
The new algorithm allows the explicit usage of "" and '' to denote key
names. This is useful for accessing tables or keys that are named in a
non-conventional manner.
2016-03-27 20:46:19 +02:00
Bourgond Aries b171205c57 Add a test to see if the table's contents have changed 2016-03-25 17:43:32 +01:00
Bourgond Aries 32969ca891 Implement the non-recursive lookup_mut
Also include some tests simply by copying and modifying
the other tests for lookup.
2016-03-25 17:33:46 +01:00
Bourgond Aries 9b1dc843fc Add lookup_mut method for mutable access
Mutable access may sometimes be desired in order to change values
in the toml table. This can be used for dynamic configurations which
will be easy to modify and store.

lookup_mut requires a recursive method due to the borrow checker
not allowing to have more than one mutable reference in the same
scope.
2016-03-24 14:18:00 +01:00
Alex Crichton 511c235d7d Fix last tests 2016-03-11 09:20:32 -08:00
Alex Crichton 3345fea319 Fix an error message test, simlify some serde code 2016-03-11 01:32:16 -08:00
Alex Crichton d02e622330 WIP 2016-03-07 23:48:01 -08:00
Alex Crichton 6b0a1362a1 Support literal strings in table names
Closes #85
2016-01-24 10:50:39 -08:00
Corey Farwell 7be39d725d Address issues found by rust-clippy 2016-01-21 08:38:09 -05:00
Jake Goulding 67107034fc Minor documentation grammar fix 2016-01-01 17:57:01 -05:00
Alex Crichton 39d77b6d79 When decoding maps, leave fields that weren't processed
Fixes an XXX
2015-12-18 16:29:07 -08:00
Cameron Silvestrini caa4615536 Fixed bug: floats always end up in Decoder.toml, even when they have
been successfully decoded.
2015-12-15 22:43:24 +11:00
osboxes.org dea8646b8b Allow BOM (Byte order mark) in toml 2015-10-07 11:35:49 +02:00
Guillaume Gomez db75e532e5 Add Clone derive on ParserError 2015-09-30 00:00:17 +02:00
Kerhong 547e202c15 Implement Value::lookup for empty path to return self 2015-09-25 19:26:47 +03:00
mseri dc0aa5f6c4 Fixed typo 2015-08-29 12:47:21 +01:00
Alex Gulyás 64ae43a386 Fix the arithmetic overflow in Parser::to_linecol
This also changes the calculated line and column numbers. Without this
patch, if an error occurs at the end of a line, the returned line and
column numbers will point at the start of the next line.

After this patch, the line and column numbers will correctly point at
the end of the line where the actual parse error happened.
2015-08-14 14:54:32 +02:00