darklua_core/nodes/expressions/
field.rs

1use crate::nodes::{Identifier, Prefix, Token};
2
3#[derive(Clone, Debug, PartialEq, Eq)]
4pub struct FieldExpression {
5    prefix: Prefix,
6    field: Identifier,
7    token: Option<Token>,
8}
9
10impl FieldExpression {
11    pub fn new<IntoPrefix: Into<Prefix>, IntoIdentifier: Into<Identifier>>(
12        prefix: IntoPrefix,
13        field: IntoIdentifier,
14    ) -> Self {
15        Self {
16            prefix: prefix.into(),
17            field: field.into(),
18            token: None,
19        }
20    }
21
22    pub fn with_token(mut self, token: Token) -> Self {
23        self.token = Some(token);
24        self
25    }
26
27    #[inline]
28    pub fn set_token(&mut self, token: Token) {
29        self.token = Some(token);
30    }
31
32    #[inline]
33    pub fn get_token(&self) -> Option<&Token> {
34        self.token.as_ref()
35    }
36
37    #[inline]
38    pub fn get_prefix(&self) -> &Prefix {
39        &self.prefix
40    }
41
42    #[inline]
43    pub fn get_field(&self) -> &Identifier {
44        &self.field
45    }
46
47    pub fn mutate_prefix(&mut self) -> &mut Prefix {
48        &mut self.prefix
49    }
50
51    super::impl_token_fns!(
52        target = [field]
53        iter = [token]
54    );
55}