appcore-filemaker 0.1.0-beta.1

Deterministic declarative document, canvas, and dataset compiler for AppCore
Documentation
// =============================================================================
//        #######
//     ###       ###     F: binding_style.rs
//    ##   ## ##   ##    P: AppCore-Runtime
//         ## ##
//                       C: 2026/08/30 05:00:00 by dnettoRaw
//    ##   ## ##   ##    U: 2026/08/30 05:00:00 by dnettoRaw
//      ###########      S: 1.0.2-rc
// =============================================================================

use crate::{DataValue, ElementIr, Expression, ExpressionBudget, ResourceLimits, Result};

pub(crate) fn apply_data_style_rules(
    element: &mut ElementIr,
    data: &DataValue,
    limits: &ResourceLimits,
) -> Result<()> {
    for rule in &element.style_rules {
        let mut budget = ExpressionBudget::new(limits.max_expression_steps)?;
        if Expression::parse(&rule.when)?
            .evaluate(data, &mut budget)?
            .is_truthy()
        {
            element.style.overlay(&rule.style);
        }
    }
    element.style_rules.clear();
    Ok(())
}