1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#![macro_use]
#[macro_export]
macro_rules! md {
($e : expr) => {
SlackBlockMarkDownText::new($e.into()).into()
};
($e : expr, $($es:expr),+) => {
md!(format!($e,$($es),+))
};
}
#[macro_export]
macro_rules! pt {
($e : expr) => {
SlackBlockPlainText::new($e.into()).into()
};
($e : expr, $($es:expr),+) => {
pt!(format!($e,$($es),+))
};
}
#[macro_export]
macro_rules! slack_block_item {
(optionally ($pred:expr => $item:expr)) => {{
if $pred {
slack_block_item! (some $item)
}
else {
None
}
}};
(some $item:expr) => {{
Some($item)
}};
(optionally_into ($pred:expr => $item:expr)) => {{
if $pred {
slack_block_item! (some_into $item)
}
else {
None
}
}};
(some_into $item:expr ) => {{
Some($item.into())
}};
}
#[macro_export]
macro_rules! slack_blocks {
() => { vec![] };
($($pred : tt($item:expr $(=> $item_r:expr)?)),+) => {{
vec![
$(slack_block_item! ($pred($item $(=> $item_r)?))),*
].into_iter().flatten().collect()
}};
}