use pine_builtin_macro::BuiltinFunction;
use pine_core::{AlertCondition, AlertConditionOutput, PineOutput};
use pine_interpreter::{Interpreter, RuntimeError, Value};
#[derive(BuiltinFunction)]
#[builtin(name = "alertcondition")]
struct Alertcondition<O: PineOutput + AlertConditionOutput> {
condition: Value<O>,
#[arg(default = "")]
title: String,
#[arg(default = "")]
message: String,
}
impl<O: PineOutput + AlertConditionOutput> Alertcondition<O> {
fn execute(&self, ctx: &mut Interpreter<O>) -> Result<Value<O>, RuntimeError> {
if self.condition.truthy_for_condition()? {
ctx.output.add_alertcondition(AlertCondition {
title: self.title.clone(),
message: self.message.clone(),
});
}
Ok(Value::Na)
}
}
pub fn register<O: PineOutput + AlertConditionOutput>() -> Value<O> {
Alertcondition::<O>::builtin_value()
}