1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
use crate::common::data::Data;
use crate::core::extract::triop;

/// An implementation of an if statement, as an FFI.
/// Interesting idea, not sure if I'm going to keep it.
pub fn if_choice(data: Data) -> Result<Data, String> {
    if let (Data::Boolean(condition), option_a, option_b) = triop(data) {
        let choice = if condition { option_a } else { option_b };
        Ok(choice)
    } else {
        Err("\
            Expected the condition to be a boolean.\n\
            Note that Passerine does not have a notion of truthiness."
            .to_string()
        )
    }
}