use crate::jsonpath::ast::selector::{IndexSelector, NameSelector};
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum SingularQuery {
Absolute(AbsoluteSingularQuery),
Relative(RelativeSingularQuery),
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct AbsoluteSingularQuery {
segments: Vec<SingularQuerySegment>,
}
impl AbsoluteSingularQuery {
pub fn new(segments: Vec<SingularQuerySegment>) -> AbsoluteSingularQuery {
AbsoluteSingularQuery { segments }
}
pub fn segments(&self) -> &[SingularQuerySegment] {
&self.segments
}
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct RelativeSingularQuery {
segments: Vec<SingularQuerySegment>,
}
impl RelativeSingularQuery {
pub fn new(segments: Vec<SingularQuerySegment>) -> RelativeSingularQuery {
RelativeSingularQuery { segments }
}
pub fn segments(&self) -> &[SingularQuerySegment] {
&self.segments
}
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum SingularQuerySegment {
Name(NameSelector),
Index(IndexSelector),
}