summaryrefslogtreecommitdiffstats
path: root/third_party/rust/plist/src/lib.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 19:33:14 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 19:33:14 +0000
commit36d22d82aa202bb199967e9512281e9a53db42c9 (patch)
tree105e8c98ddea1c1e4784a60a5a6410fa416be2de /third_party/rust/plist/src/lib.rs
parentInitial commit. (diff)
downloadfirefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz
firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip
Adding upstream version 115.7.0esr.upstream/115.7.0esrupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'third_party/rust/plist/src/lib.rs')
-rw-r--r--third_party/rust/plist/src/lib.rs133
1 files changed, 133 insertions, 0 deletions
diff --git a/third_party/rust/plist/src/lib.rs b/third_party/rust/plist/src/lib.rs
new file mode 100644
index 0000000000..0ac048e30d
--- /dev/null
+++ b/third_party/rust/plist/src/lib.rs
@@ -0,0 +1,133 @@
+//! # Plist
+//!
+//! A rusty plist parser.
+//!
+//! ## Usage
+//!
+//! Put this in your `Cargo.toml`:
+//!
+//! ```toml
+//! [dependencies]
+//! plist = "1"
+//! ```
+//!
+//! And put this in your crate root:
+//!
+//! ```rust
+//! extern crate plist;
+//! ```
+//!
+//! ## Examples
+//!
+//! ### Using `serde`
+//!
+//! ```rust
+//! extern crate plist;
+//! # #[cfg(feature = "serde")]
+//! #[macro_use]
+//! extern crate serde_derive;
+//!
+//! # #[cfg(feature = "serde")]
+//! # fn main() {
+//! #[derive(Deserialize)]
+//! #[serde(rename_all = "PascalCase")]
+//! struct Book {
+//! title: String,
+//! author: String,
+//! excerpt: String,
+//! copies_sold: u64,
+//! }
+//!
+//! let book: Book = plist::from_file("tests/data/book.plist")
+//! .expect("failed to read book.plist");
+//!
+//! assert_eq!(book.title, "Great Expectations");
+//! # }
+//! #
+//! # #[cfg(not(feature = "serde"))]
+//! # fn main() {}
+//! ```
+//!
+//! ### Using `Value`
+//!
+//! ```rust
+//! use plist::Value;
+//!
+//! let book = Value::from_file("tests/data/book.plist")
+//! .expect("failed to read book.plist");
+//!
+//! let title = book
+//! .as_dictionary()
+//! .and_then(|dict| dict.get("Title"))
+//! .and_then(|title| title.as_string());
+//!
+//! assert_eq!(title, Some("Great Expectations"));
+//! ```
+//!
+//! ## Unstable Features
+//!
+//! Many features from previous versions are now hidden behind the
+//! `enable_unstable_features_that_may_break_with_minor_version_bumps` feature. These will break in
+//! minor version releases after the 1.0 release. If you really really must use them you should
+//! specify a tilde requirement e.g. `plist = "~1.0.3"` in you `Cargo.toml` so that the plist crate
+//! is not automatically updated to version 1.1.
+
+pub mod dictionary;
+
+#[cfg(feature = "enable_unstable_features_that_may_break_with_minor_version_bumps")]
+pub mod stream;
+#[cfg(not(feature = "enable_unstable_features_that_may_break_with_minor_version_bumps"))]
+mod stream;
+
+mod date;
+mod error;
+mod integer;
+mod uid;
+mod value;
+
+pub use date::Date;
+pub use dictionary::Dictionary;
+pub use error::Error;
+pub use integer::Integer;
+pub use stream::XmlWriteOptions;
+pub use uid::Uid;
+pub use value::Value;
+
+// Optional serde module
+#[cfg(feature = "serde")]
+#[macro_use]
+extern crate serde;
+#[cfg(feature = "serde")]
+mod de;
+#[cfg(feature = "serde")]
+mod ser;
+#[cfg(all(
+ feature = "serde",
+ any(
+ test,
+ feature = "enable_unstable_features_that_may_break_with_minor_version_bumps"
+ )
+))]
+pub use self::{de::Deserializer, ser::Serializer};
+#[cfg(feature = "serde")]
+pub use self::{
+ de::{from_bytes, from_file, from_reader, from_reader_xml},
+ ser::{
+ to_file_binary, to_file_xml, to_writer_binary, to_writer_xml, to_writer_xml_with_options,
+ },
+};
+
+#[cfg(all(test, feature = "serde"))]
+#[macro_use]
+extern crate serde_derive;
+
+#[cfg(all(test, feature = "serde"))]
+mod serde_tests;
+
+fn u64_to_usize(len_u64: u64) -> Option<usize> {
+ let len = len_u64 as usize;
+ if len as u64 != len_u64 {
+ return None; // Too long
+ }
+ Some(len)
+}