xshade_parser/ast/
identifier.rs1use 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}