1#[cfg(feature = "yaml")]
2macro_rules! yaml_tuple2 {
3 ($a:ident, $v:ident, $c:ident) => {{
4 if let Some(vec) = $v.as_vec() {
5 for ys in vec {
6 if let Some(tup) = ys.as_vec() {
7 debug_assert_eq!(2, tup.len());
8 $a = $a.$c(yaml_str!(tup[0]), yaml_str!(tup[1]));
9 } else {
10 panic!("Failed to convert YAML value to vec");
11 }
12 }
13 } else {
14 panic!("Failed to convert YAML value to vec");
15 }
16 $a
17 }
18 };
19}
20
21#[cfg(feature = "yaml")]
22macro_rules! yaml_tuple3 {
23 ($a:ident, $v:ident, $c:ident) => {{
24 if let Some(vec) = $v.as_vec() {
25 for ys in vec {
26 if let Some(tup) = ys.as_vec() {
27 debug_assert_eq!(3, tup.len());
28 $a = $a.$c(yaml_str!(tup[0]), yaml_opt_str!(tup[1]), yaml_str!(tup[2]));
29 } else {
30 panic!("Failed to convert YAML value to vec");
31 }
32 }
33 } else {
34 panic!("Failed to convert YAML value to vec");
35 }
36 $a
37 }
38 };
39}
40
41#[cfg(feature = "yaml")]
42macro_rules! yaml_vec_or_str {
43 ($v:ident, $a:ident, $c:ident) => {{
44 let maybe_vec = $v.as_vec();
45 if let Some(vec) = maybe_vec {
46 for ys in vec {
47 if let Some(s) = ys.as_str() {
48 $a = $a.$c(s);
49 } else {
50 panic!("Failed to convert YAML value {:?} to a string", ys);
51 }
52 }
53 } else {
54 if let Some(s) = $v.as_str() {
55 $a = $a.$c(s);
56 } else {
57 panic!("Failed to convert YAML value {:?} to either a vec or string", $v);
58 }
59 }
60 $a
61 }
62 };
63}
64
65#[cfg(feature = "yaml")]
66macro_rules! yaml_opt_str {
67 ($v:expr) => {{
68 if $v.is_null() {
69 Some($v.as_str().unwrap_or_else(|| panic!("failed to convert YAML {:?} value to a string", $v)))
70 } else {
71 None
72 }
73 }};
74}
75
76#[cfg(feature = "yaml")]
77macro_rules! yaml_str {
78 ($v:expr) => {{
79 $v.as_str().unwrap_or_else(|| panic!("failed to convert YAML {:?} value to a string", $v))
80 }};
81}
82
83#[cfg(feature = "yaml")]
84macro_rules! yaml_to_str {
85 ($a:ident, $v:ident, $c:ident) => {{
86 $a.$c(yaml_str!($v))
87 }};
88}
89
90#[cfg(feature = "yaml")]
91macro_rules! yaml_to_bool {
92 ($a:ident, $v:ident, $c:ident) => {{
93 $a.$c($v.as_bool().unwrap_or_else(|| panic!("failed to convert YAML {:?} value to a string", $v)))
94 }};
95}
96
97#[cfg(feature = "yaml")]
98macro_rules! yaml_to_u64 {
99 ($a:ident, $v:ident, $c:ident) => {{
100 $a.$c($v.as_i64().unwrap_or_else(|| panic!("failed to convert YAML {:?} value to a string", $v)) as u64)
101 }};
102}
103
104#[cfg(feature = "yaml")]
105macro_rules! yaml_to_usize {
106 ($a:ident, $v:ident, $c:ident) => {{
107 $a.$c($v.as_i64().unwrap_or_else(|| panic!("failed to convert YAML {:?} value to a string", $v)) as usize)
108 }};
109}