MCPcopy Create free account
hub / github.com/AmrDeveloper/GQL / evaluate_between

Function evaluate_between

crates/gitql-engine/src/engine_evaluator.rs:508–536  ·  view source on GitHub ↗
(
    env: &mut Environment,
    expr: &BetweenExpr,
    titles: &[String],
    object: &Vec<Box<dyn Value>>,
)

Source from the content-addressed store, hash-verified

506}
507
508fn evaluate_between(
509 env: &mut Environment,
510 expr: &BetweenExpr,
511 titles: &[String],
512 object: &Vec<Box<dyn Value>>,
513) -> Result<Box<dyn Value>, String> {
514 let value = evaluate_expression(env, &expr.value, titles, object)?;
515 let range_start = evaluate_expression(env, &expr.range_start, titles, object)?;
516 let range_end = evaluate_expression(env, &expr.range_end, titles, object)?;
517 let comparing_result = match expr.kind {
518 BetweenKind::Symmetric => {
519 let (start, end) = if let Some(order) = range_start.compare(&range_end) {
520 if Ordering::is_gt(order) {
521 (range_end, range_start)
522 } else {
523 (range_start, range_end)
524 }
525 } else {
526 (range_start, range_end)
527 };
528 value.compare(&start).unwrap().is_ge() && value.compare(&end).unwrap().is_le()
529 }
530 BetweenKind::Asymmetric => {
531 value.compare(&range_start).unwrap().is_ge()
532 && value.compare(&range_end).unwrap().is_le()
533 }
534 };
535 Ok(Box::new(BoolValue::new(comparing_result)))
536}
537
538fn evaluate_case(
539 env: &mut Environment,

Callers 1

evaluate_expressionFunction · 0.85

Calls 2

evaluate_expressionFunction · 0.85
compareMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…