aldrin_parser/ast/
lit_string.rs

1use crate::grammar::Rule;
2use crate::Span;
3use pest::iterators::Pair;
4
5#[derive(Debug, Clone)]
6pub struct LitString {
7    span: Span,
8    value: String,
9}
10
11impl LitString {
12    pub(crate) fn parse(pair: Pair<Rule>) -> Self {
13        assert_eq!(pair.as_rule(), Rule::lit_string);
14
15        Self {
16            span: Span::from_pair(&pair),
17            value: pair.as_str().to_owned(),
18        }
19    }
20
21    pub fn span(&self) -> Span {
22        self.span
23    }
24
25    pub fn span_inner(&self) -> Span {
26        Span {
27            start: self.span.start + 1,
28            end: self.span.end - 1,
29        }
30    }
31
32    pub fn value(&self) -> &str {
33        &self.value
34    }
35
36    pub fn value_inner(&self) -> &str {
37        &self.value[1..self.value.len() - 1]
38    }
39}