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