slack_morphism/models/blocks/
dsl.rs

1#![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}