darklua_core/nodes/expressions/
parenthese.rs1use crate::nodes::{Expression, Token};
2
3#[derive(Clone, Debug, PartialEq, Eq)]
4pub struct ParentheseTokens {
5 pub left_parenthese: Token,
6 pub right_parenthese: Token,
7}
8
9impl ParentheseTokens {
10 super::impl_token_fns!(target = [left_parenthese, right_parenthese]);
11}
12
13#[derive(Clone, Debug, PartialEq, Eq)]
14pub struct ParentheseExpression {
15 expression: Expression,
16 tokens: Option<ParentheseTokens>,
17}
18
19impl ParentheseExpression {
20 pub fn new<E: Into<Expression>>(expression: E) -> Self {
21 Self {
22 expression: expression.into(),
23 tokens: None,
24 }
25 }
26
27 #[inline]
28 pub fn inner_expression(&self) -> &Expression {
29 &self.expression
30 }
31
32 #[inline]
33 pub fn into_inner_expression(self) -> Expression {
34 self.expression
35 }
36
37 #[inline]
38 pub fn mutate_inner_expression(&mut self) -> &mut Expression {
39 &mut self.expression
40 }
41
42 pub fn with_tokens(mut self, tokens: ParentheseTokens) -> Self {
43 self.tokens = Some(tokens);
44 self
45 }
46
47 #[inline]
48 pub fn set_tokens(&mut self, tokens: ParentheseTokens) {
49 self.tokens = Some(tokens);
50 }
51
52 #[inline]
53 pub fn get_tokens(&self) -> Option<&ParentheseTokens> {
54 self.tokens.as_ref()
55 }
56
57 #[inline]
58 pub fn mutate_tokens(&mut self) -> Option<&mut ParentheseTokens> {
59 self.tokens.as_mut()
60 }
61
62 super::impl_token_fns!(iter = [tokens]);
63}