use serde::{Deserialize, Serialize};
use serde_json::Value;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum Interrupt {
Before(String),
After(String),
Dynamic {
message: String,
data: Option<Value>,
},
}
impl std::fmt::Display for Interrupt {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Self::Before(node) => write!(f, "Interrupt before '{}'", node),
Self::After(node) => write!(f, "Interrupt after '{}'", node),
Self::Dynamic { message, .. } => write!(f, "Dynamic interrupt: {}", message),
}
}
}
pub fn interrupt(message: &str) -> Interrupt {
Interrupt::Dynamic { message: message.to_string(), data: None }
}
pub fn interrupt_with_data(message: &str, data: Value) -> Interrupt {
Interrupt::Dynamic { message: message.to_string(), data: Some(data) }
}