aldrin_parser/ast/
lit_string.rs1use 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}