diff options
Diffstat (limited to 'crates/shirabe-semver/src/compiling_matcher.rs')
| -rw-r--r-- | crates/shirabe-semver/src/compiling_matcher.rs | 30 |
1 files changed, 11 insertions, 19 deletions
diff --git a/crates/shirabe-semver/src/compiling_matcher.rs b/crates/shirabe-semver/src/compiling_matcher.rs index 142fd0d6..0d637037 100644 --- a/crates/shirabe-semver/src/compiling_matcher.rs +++ b/crates/shirabe-semver/src/compiling_matcher.rs @@ -3,25 +3,17 @@ use crate::constraint::AnyConstraint; use crate::constraint::SimpleConstraint; use indexmap::IndexMap; +use shirabe_php_shim::CmpOp; use std::sync::Mutex; use std::sync::OnceLock; +// Rust does not support eval(), so the compiled checker path is always disabled. +// The COMPILED_CHECKER_CACHE is retained structurally but never populated. static COMPILED_CHECKER_CACHE: OnceLock< Mutex<IndexMap<String, Box<dyn Fn(String, bool) -> bool + Send + Sync>>>, > = OnceLock::new(); static RESULT_CACHE: OnceLock<Mutex<IndexMap<String, bool>>> = OnceLock::new(); -// Rust does not support eval(), so the compiled checker path is always disabled. -// The COMPILED_CHECKER_CACHE is retained structurally but never populated. -static TRANS_OP_INT: &[(i64, &str)] = &[ - (SimpleConstraint::OP_EQ, SimpleConstraint::STR_OP_EQ), - (SimpleConstraint::OP_LT, SimpleConstraint::STR_OP_LT), - (SimpleConstraint::OP_LE, SimpleConstraint::STR_OP_LE), - (SimpleConstraint::OP_GT, SimpleConstraint::STR_OP_GT), - (SimpleConstraint::OP_GE, SimpleConstraint::STR_OP_GE), - (SimpleConstraint::OP_NE, SimpleConstraint::STR_OP_NE), -]; - pub struct CompilingMatcher; impl CompilingMatcher { @@ -39,8 +31,13 @@ impl CompilingMatcher { Self::compiled_checker_cache().lock().unwrap().clear(); } - pub fn r#match(constraint: &AnyConstraint, operator: i64, version: String) -> bool { - let result_cache_key = format!("{}{};{}", operator, constraint, version); + pub fn r#match(constraint: &AnyConstraint, operator: CmpOp, version: String) -> bool { + let result_cache_key = format!( + "{}{};{}", + SimpleConstraint::get_operator_constant(operator), + constraint, + version + ); { let cache = Self::result_cache().lock().unwrap(); @@ -49,13 +46,8 @@ impl CompilingMatcher { } } - let trans_op = TRANS_OP_INT - .iter() - .find(|(op, _)| *op == operator) - .map(|(_, s)| *s) - .expect("unknown operator"); let result = - constraint.matches(&SimpleConstraint::new(trans_op.to_string(), version, None).into()); + constraint.matches(&SimpleConstraint::new(operator.to_string(), version, None).into()); Self::result_cache() .lock() |
