gtk_ui_builder/parser/
token.rs1#[derive(Debug, Clone, PartialEq, Eq)]
2pub enum Token {
3 Text {
5 begin: usize,
6 end: usize,
7 value: String
8 },
9
10 Parentheses {
12 begin: usize,
13 end: usize,
14 tokens: Vec<Token>
15 },
16
17 SquareBrackets {
21 begin: usize,
22 end: usize,
23 tokens: Vec<Token>
24 },
25
26 CurlyBrackets {
28 begin: usize,
29 end: usize,
30 tokens: Vec<Token>
31 },
32
33 Other {
35 begin: usize,
36 end: usize,
37 value: String
38 }
39}
40
41impl Token {
42 pub fn is_other(&self) -> bool {
43 match self {
44 Self::Other { .. } => true,
45 _ => false
46 }
47 }
48
49 pub fn is_other_value<T: ToString>(&self, other: T) -> bool {
50 match self {
51 Self::Other { value, .. } => *value == other.to_string(),
52 _ => false
53 }
54 }
55
56 pub fn get_value(&self) -> Option<String> {
57 match self {
58 Token::Text { value, .. } |
59 Token::Other { value, .. } => Some(value.clone()),
60 _ => None
61 }
62 }
63
64 pub fn get_begin(&self) -> usize {
65 match *self {
66 Token::Text { begin, .. } => begin,
67 Token::Parentheses { begin, .. } => begin,
68 Token::SquareBrackets { begin, .. } => begin,
69 Token::CurlyBrackets { begin, .. } => begin,
70 Token::Other { begin, .. } => begin
71 }
72 }
73
74 pub fn get_end(&self) -> usize {
75 match *self {
76 Token::Text { end, .. } => end,
77 Token::Parentheses { end, .. } => end,
78 Token::SquareBrackets { end, .. } => end,
79 Token::CurlyBrackets { end, .. } => end,
80 Token::Other { end, .. } => end
81 }
82 }
83}