xshade_parser/ast/
identifier.rs

1use nom::types::CompleteStr;
2use nom_locate::LocatedSpan;
3use ast::*;
4
5type NomSpan<'a> = LocatedSpan<CompleteStr<'a>>;
6
7#[derive(Debug, Eq, PartialEq, Serialize, Deserialize)]
8pub struct Identifier {
9    pub span: Span,
10    pub name: String,
11}
12
13impl Identifier {
14    pub fn new(name: &str, span: Span) -> Identifier {
15        Identifier {
16            span: span,
17            name: name.to_string(),
18        }
19    }
20
21    pub fn from_nom_span(span: &NomSpan) -> Identifier {
22        Identifier {
23            span: Span::new(span.offset, span.fragment.len(), span.line as usize, span.get_column() as usize),
24            name: span.fragment.to_string(),
25        }
26    }
27}
28
29impl Spanned for Identifier {
30    fn get_span(&self) -> Span {
31        self.span
32    }
33}