#[cfg(feature = "element")]
#[macro_export]
macro_rules! segment {
(at, all) => {
segment!(at, "all")
};
(at, $target_id:expr) => {
$crate::element::send::Elements::At($crate::element::send::AtElement {
target_id: $target_id.to_string(),
})
};
(text, $text:expr) => {
$crate::element::send::Elements::Text($crate::element::send::TextElement {
text: $text.to_string(),
})
};
(image, $file:expr) => {
segment!(image, $file, false, None)
};
(image, $file:expr, $is_flash:expr) => {
segment!(image, $file, $is_flash, None)
};
(image, $file:expr, $is_flash:expr, $summary:expr) => {
$crate::element::send::Elements::Image($crate::element::send::ImageElement {
file: $file,
summary: $summary,
})
};
(reply, $message_id:expr) => {
$crate::element::send::Elements::Reply($crate::element::send::ReplyElement {
message_id: $message_id,
})
};
(file, $file:expr) => {
$crate::element::send::Elements::File($crate::element::send::FileElement {
file: $file,
})
};
(record, $file:expr) => {
$crate::element::send::Elements::Record($crate::element::send::RecordElement {
file: $file,
})
};
(video, $file:expr) => {
$crate::element::send::Elements::Video($crate::element::send::VideoElement {
file: $file,
})
};
(face, $id:expr) => {
$crate::element::send::Elements::Face($crate::element::send::FaceElement {
id: $id,
})
};
(json, $json:expr) => {
$crate::element::send::Elements::Json($crate::element::send::JsonElement {
data: $json.to_string(),
})
};
(xml, $xml:expr) => {
$crate::element::send::Elements::Xml($crate::element::send::XmlElement {
file: $xml.to_string(),
})
};
($($t:tt)*) => {
compile_error!(concat!("Invalid segment! pattern: ", stringify!($($t)*)));
};
}