darklua_core/nodes/expressions/
field.rs1use 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}