commit | 844be2c53ace72f5f4ed89b9af7e3f246485fac9 | [log] [tgz] |
---|---|---|
author | James Farrell <jamesfarrell@google.com> | Mon Sep 30 22:59:22 2024 +0000 |
committer | James Farrell <jamesfarrell@google.com> | Mon Sep 30 22:59:22 2024 +0000 |
tree | 4809fb3059f83035cf35296626c7e2f58822ba2e | |
parent | 0467683a3df593c53ba618f792b1ad54e861a9f5 [diff] |
Migrate 25 crates to monorepo quickcheck regex-automata ryu same-file serde serde_json serde_spanned serde_test sharded-slab shlex siphasher tinyvec tinyvec_macros tokio-io-timeout toml toml_datetime toml_edit uniffi uniffi_checksum_derive uniffi_meta virtio-bindings virtio-queue virtio-vsock vsock vsprintf zerocopy-derive Bug: http://b/339424309 Test: treehugger Change-Id: I121b1204e46c1ca52447d519ba6a65210b76d526
This crate allows you to parse and modify toml documents, while preserving comments, spaces and relative order of items.
toml_edit
is primarily tailored for cargo-edit needs.
use toml_edit::{Document, value}; fn main() { let toml = r#" "hello" = 'toml!' # comment ['a'.b] "#; let mut doc = toml.parse::<Document>().expect("invalid doc"); assert_eq!(doc.to_string(), 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"].as_inline_table_mut().map(|t| t.fmt()); let expected = r#" "hello" = 'toml!' # comment ['a'.b] c = { d = "hello" } "#; assert_eq!(doc.to_string(), expected); }
Things it does not preserve:
Licensed under either of
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.