titlefmt 0.4.0

Metadata Title Formatting Library
Documentation
use super::Error;
use expression::{Evaluation, Expression, Value};
use metadata;

pub fn if_<T: metadata::Provider>(
    expressions: &[Box<Expression<T>>],
    provider: &T,
) -> Result<Evaluation, Error> {
    match expressions.len() {
        2 | 3 => (),
        _ => return Err(Error::ArgumentError),
    }
    let eval = expressions[0].apply(provider);
    if eval.truth() {
        Ok(expressions[1].apply(provider))
    } else {
        match expressions.len() {
            2 => Ok(Evaluation::new(Value::Empty, false)),
            3 => Ok(expressions[2].apply(provider)),
            _ => Err(Error::ArgumentError),
        }
    }
}

#[cfg(test)]
mod test;