1#![deny(warnings, clippy::pedantic)]
5#![allow(clippy::cast_possible_wrap, clippy::cast_sign_loss)]
6
7pub mod kind;
8pub mod secrets;
9
10#[allow(clippy::module_inception)]
11pub mod value;
12
13mod btreemap;
14mod keystring;
15
16pub use kind::Kind;
17
18pub use self::keystring::KeyString;
19pub use self::secrets::Secrets;
20#[allow(clippy::module_name_repetitions)]
21pub use self::value::{ObjectMap, Value, ValueRegex};
22
23#[macro_export]
25macro_rules! value {
26 ([]) => ({
27 $crate::value::Value::Array(vec![])
28 });
29
30 ([$($v:tt),+ $(,)?]) => ({
31 let vec: Vec<$crate::value::Value> = vec![$($crate::value!($v)),+];
32 $crate::value::Value::Array(vec)
33 });
34
35 ({}) => ({
36 $crate::value::Value::Object(::std::collections::BTreeMap::default())
37 });
38
39 ({$($($k1:literal)? $($k2:ident)?: $v:tt),+ $(,)?}) => ({
40 let map = vec![$((String::from($($k1)? $(stringify!($k2))?).into(), $crate::value!($v))),+]
41 .into_iter()
42 .collect::<::std::collections::BTreeMap<_, $crate::value::Value>>();
43
44 $crate::value::Value::Object(map)
45 });
46
47 (null) => ({
48 $crate::value::Value::Null
49 });
50
51 ($k:expr_2021) => ({
52 $crate::value::Value::from($k)
53 });
54}