sigstat 0.0.3-beta.2

Statsig Rust SDK for usage in multi-user server environments.
Documentation
use crate::{unwrap_or_return, DynamicValue};

pub(crate) fn compare_str_with_regex(value: &DynamicValue, regex_value: &DynamicValue) -> bool {
    let value_str = unwrap_or_return!(&value.string_value, false);
    let regex = unwrap_or_return!(&regex_value.regex_value, false);
    regex.is_match(value_str)
}

#[cfg(test)]
mod tests {
    use crate::evaluation::comparisons::compare_str_with_regex;
    use crate::{dyn_value, DynamicValue};

    #[test]
    fn test_compare_regex_simple() {
        let left = dyn_value!("apple banana pear");
        let mut right = dyn_value!("banana");
        right.compile_regex();

        assert!(compare_str_with_regex(&left, &right))
    }

    #[test]
    fn test_compare_regex_complex() {
        let left =
            dyn_value!(r#"{ "name": "Statsig", "version": "4.8.1-beta.32", "license": "ISC" }"#);
        let mut right = dyn_value!(r#"version":\s*"4\.8\.\d+"#); // Major.Minor == 4.8
        right.compile_regex();

        assert!(compare_str_with_regex(&left, &right))
    }
}