evalexpr/token/
display.rs

1#![cfg(not(tarpaulin_include))]
2
3use std::fmt;
4
5use crate::{
6    token::{PartialToken, Token},
7    value::numeric_types::EvalexprNumericTypes,
8};
9
10impl<NumericTypes: EvalexprNumericTypes> fmt::Display for Token<NumericTypes> {
11    fn fmt(&self, f: &mut fmt::Formatter) -> Result<(), fmt::Error> {
12        use self::Token::*;
13        match self {
14            Plus => write!(f, "+"),
15            Minus => write!(f, "-"),
16            Star => write!(f, "*"),
17            Slash => write!(f, "/"),
18            Percent => write!(f, "%"),
19            Hat => write!(f, "^"),
20
21            // Logic
22            Eq => write!(f, "=="),
23            Neq => write!(f, "!="),
24            Gt => write!(f, ">"),
25            Lt => write!(f, "<"),
26            Geq => write!(f, ">="),
27            Leq => write!(f, "<="),
28            And => write!(f, "&&"),
29            Or => write!(f, "||"),
30            Not => write!(f, "!"),
31
32            // Precedence
33            LBrace => write!(f, "("),
34            RBrace => write!(f, ")"),
35
36            // Assignment
37            Assign => write!(f, "="),
38            PlusAssign => write!(f, "+="),
39            MinusAssign => write!(f, "-="),
40            StarAssign => write!(f, "*="),
41            SlashAssign => write!(f, "/="),
42            PercentAssign => write!(f, "%="),
43            HatAssign => write!(f, "^="),
44            AndAssign => write!(f, "&&="),
45            OrAssign => write!(f, "||="),
46
47            // Special
48            Comma => write!(f, ","),
49            Semicolon => write!(f, ";"),
50
51            // Values => write!(f, ""), Variables and Functions
52            Identifier(identifier) => identifier.fmt(f),
53            Float(float) => float.fmt(f),
54            Int(int) => int.fmt(f),
55            Boolean(boolean) => boolean.fmt(f),
56            String(string) => fmt::Debug::fmt(string, f),
57        }
58    }
59}
60
61impl<NumericTypes: EvalexprNumericTypes> fmt::Display for PartialToken<NumericTypes> {
62    fn fmt(&self, f: &mut fmt::Formatter) -> Result<(), fmt::Error> {
63        use self::PartialToken::*;
64        match self {
65            Token(token) => token.fmt(f),
66            Literal(literal) => literal.fmt(f),
67            Whitespace => write!(f, " "),
68            Plus => write!(f, "+"),
69            Minus => write!(f, "-"),
70            Star => write!(f, "*"),
71            Slash => write!(f, "/"),
72            Percent => write!(f, "%"),
73            Hat => write!(f, "^"),
74            Eq => write!(f, "="),
75            ExclamationMark => write!(f, "!"),
76            Gt => write!(f, ">"),
77            Lt => write!(f, "<"),
78            Ampersand => write!(f, "&"),
79            VerticalBar => write!(f, "|"),
80        }
81    }
82}