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() }}; }