toml_edit

This crate allows you to parse and modify toml
documents, while preserving comments, spaces and
relative order or items.
toml_edit
is primarily tailored for cargo-edit needs.
Example
```rust
extern crate toml_edit;
use toml_edit::{Document, value};
fn main() {
let toml = r#"
"hello" = 'toml!' # comment
['a'.b]
"#;
let mut doc = toml.parse::().expect("invalid doc");
asserteq!(doc.tostring(), toml);
// let's add a new key/value pair inside a.b: c = {d = "hello"}
doc["a"]["b"]["c"]["d"] = value("hello");
// autoformat inline table a.b.c: { d = "hello" }
doc["a"]["b"]["c"].asinlinetablemut().map(|t| t.fmt());
let expected = r#"
"hello" = 'toml!' # comment
['a'.b]
c = { d = "hello" }
"#;
asserteq!(doc.to_string(), expected);
}
```
Limitations
Things it does not preserve:
- Scattered array of tables (tables are reordered by default, see [test]).
- Order of dotted keys, see issue.
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.