rested/lexer/
display.rs

1use super::{locations::Location, TokenKind};
2
3impl std::fmt::Display for TokenKind {
4    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
5        use TokenKind::*;
6        let str = match self {
7            Get => "get",
8            Post => "post",
9            Put => "put",
10            Patch => "patch",
11            Delete => "delete",
12            Header => "header",
13            Body => "body",
14            Set => "set",
15            Let => "let",
16            Ident => "identifier",
17            Boolean => "boolean",
18            Number => "number",
19            StringLiteral => "string",
20            Pathname => "pathname",
21            Url => "url",
22            Linecomment => "comment",
23            Shebang => "#!...",
24            Assign => "=",
25            DollarSignLBracket => "${",
26            LParen => "(",
27            RParen => ")",
28            LBracket => "{",
29            RBracket => "}",
30            LSquare => "[",
31            RSquare => "]",
32            Colon => ":",
33            AttributePrefix => "@",
34            Comma => ",",
35            End => "Eof",
36            UnfinishedStringLiteral => "\"...",
37            UnfinishedMultiLineStringLiteral => "`...",
38            IllegalToken => "illegal",
39            Null => "null",
40            OpeningBackTick => "`",
41            ClosingBackTick => "`",
42        };
43
44        f.write_str(str)
45    }
46}
47
48impl std::fmt::Display for Location {
49    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
50        write!(f, "[{}:{}]", self.line + 1, self.col + 1)
51    }
52}