use crate::jsonpath::ast::function::functions::ValueTypeFunction;
use crate::jsonpath::ast::literal::Literal;
use crate::jsonpath::ast::singular_query::SingularQuery;
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct ComparisonExpr {
left: Comparable,
right: Comparable,
operator: ComparisonOp,
}
impl ComparisonExpr {
pub fn new(left: Comparable, right: Comparable, operator: ComparisonOp) -> ComparisonExpr {
ComparisonExpr {
left,
right,
operator,
}
}
pub fn left(&self) -> &Comparable {
&self.left
}
pub fn right(&self) -> &Comparable {
&self.right
}
pub fn operator(&self) -> &ComparisonOp {
&self.operator
}
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum Comparable {
Literal(Literal),
SingularQuery(SingularQuery),
Function(ValueTypeFunction),
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum ComparisonOp {
Equal,
NotEqual,
LessOrEqual,
Less,
GreaterOrEqual,
Greater,
}