prql-parser 0.9.5

A parser for the PRQL query language.
Documentation
use std::ops::{Add, Deref, DerefMut};

use crate::Span;

#[derive(Debug, Clone, Copy)]
pub struct ParserSpan(pub crate::Span);

impl Deref for ParserSpan {
    type Target = Span;

    fn deref(&self) -> &Self::Target {
        &self.0
    }
}

impl DerefMut for ParserSpan {
    fn deref_mut(&mut self) -> &mut Self::Target {
        &mut self.0
    }
}

impl Add<usize> for ParserSpan {
    type Output = ParserSpan;

    fn add(self, rhs: usize) -> ParserSpan {
        Self(Span {
            start: self.start + rhs,
            end: self.end + rhs,
            source_id: self.source_id,
        })
    }
}

impl chumsky::Span for ParserSpan {
    type Context = u16;

    type Offset = usize;

    fn new(context: Self::Context, range: std::ops::Range<Self::Offset>) -> Self {
        Self(Span {
            start: range.start,
            end: range.end,
            source_id: context,
        })
    }

    fn context(&self) -> Self::Context {
        self.source_id
    }

    fn start(&self) -> Self::Offset {
        self.start
    }

    fn end(&self) -> Self::Offset {
        self.end
    }
}