oak_handlebars/parser/
element_type.rs1use oak_core::{ElementType, UniversalElementRole};
2#[cfg(feature = "serde")]
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
6#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
7pub enum HandlebarsElementType {
8 Whitespace,
11 Newline,
12
13 Comment,
15
16 Open, Close, OpenUnescaped, CloseUnescaped, OpenRawBlock, CloseRawBlock, OpenEndRawBlock, OpenBlock, OpenInverseBlock, CloseBlock, OpenPartial, OpenComment, OpenCommentBlock, CloseCommentBlock, Else, Identifier,
37 StringLiteral,
38 NumberLiteral,
39 BooleanLiteral,
40 Dot, Slash, Hash, At, Pipe, Equal, LeftParen, RightParen, LeftBracket, RightBracket, Caret, Content, Root,
57 Mustache,
58 Block,
59 InverseBlock,
60 Partial,
61 CommentNode, ContentNode, Expression,
64 SubExpression,
65 Path,
66 Parameter,
67 ElseBlock,
68
69 Error,
71 Eof,
72}
73
74impl ElementType for HandlebarsElementType {
75 type Role = UniversalElementRole;
76
77 fn role(&self) -> Self::Role {
78 match self {
79 Self::Error => UniversalElementRole::Error,
80 _ => UniversalElementRole::None,
81 }
82 }
83}
84
85impl From<crate::lexer::token_type::HandlebarsTokenType> for HandlebarsElementType {
86 fn from(token: crate::lexer::token_type::HandlebarsTokenType) -> Self {
87 unsafe { std::mem::transmute(token) }
88 }
89}