jsonway/
lib.rs

1#![crate_type = "rlib"]
2#![deny(warnings)]
3#![deny(bad_style)]
4
5extern crate serde;
6extern crate serde_json;
7
8pub use object_builder::ObjectBuilder;
9pub use array_builder::ArrayBuilder;
10pub use serializer::{Serializer, ObjectSerializer, ObjectScopeSerializer};
11pub use array_serializer::ArraySerializer;
12
13pub mod array_builder;
14pub mod object_builder;
15pub mod serializer;
16pub mod array_serializer;
17
18/// ```rust
19/// let json = jsonway::object(|json| {
20///     json.set("first_name", "Luke");
21///     json.set("last_name", "Skywalker");
22///
23///     json.object("info", |json| {
24///         json.set("homeworld", "Tatooine");
25///         json.set("born", "19 BBY");
26///         json.set("died", "Between 45 ABY and 137 ABY");
27///     });
28///
29///     json.array("masters", |json| {
30///         json.push("Obi-Wan Kenobi");
31///         json.push("Yoda");
32///         json.push("Joruus C'baoth (Briefly)");
33///         json.push("Darth Sidious (Briefly)");
34///     });
35/// }).unwrap();
36///
37/// assert_eq!(json.get("first_name").unwrap().as_str().unwrap(), "Luke");
38/// assert_eq!(json.get("last_name").unwrap().as_str().unwrap(), "Skywalker");
39///
40/// assert!(json.get("info").unwrap().is_object());
41/// assert!(json.get("masters").unwrap().is_array());
42/// ```
43
44/// Create and return new ListBuilder
45pub fn array<F>(builder: F) -> ArrayBuilder where F: FnOnce(&mut ArrayBuilder) {
46    ArrayBuilder::build(builder)
47}
48
49/// Create and return new ObjectBuilder
50pub fn object<F>(builder: F) -> ObjectBuilder where F: FnOnce(&mut ObjectBuilder) {
51    ObjectBuilder::build(builder)
52}