libjuno 0.1.10

Library for JunoLang
Documentation
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct Position {
    pub line: usize,
    pub column: usize,
}

#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct Span {
    pub start: Position,
    pub end: Position,
}

use pest::error::LineColLocation;

use crate::Rule;

pub fn from_pest(
    error: &pest::error::Error<Rule>,
) -> Span {

    match error.line_col {

        LineColLocation::Pos((line, column)) => {

            Span {
                start: Position {
                    line: line - 1,
                    column: column - 1,
                },

                end: Position {
                    line: line - 1,
                    column,
                },
            }

        }

        LineColLocation::Span(
            (sl, sc),
            (el, ec),
        ) => {

            Span {
                start: Position {
                    line: sl - 1,
                    column: sc - 1,
                },

                end: Position {
                    line: el - 1,
                    column: ec,
                },
            }

        }

    }

}