oak_d2/parser/
element_type.rs1use crate::lexer::token_type::D2TokenType;
2use oak_core::{ElementType, UniversalElementRole};
3#[cfg(feature = "serde")]
4use serde::{Deserialize, Serialize};
5
6#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
8#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
9pub enum D2ElementType {
10 Token(D2TokenType),
12 Root,
14 Shape,
16 Connection,
18 Container,
20 Error,
22}
23
24impl From<D2TokenType> for D2ElementType {
25 fn from(token: D2TokenType) -> Self {
26 Self::Token(token)
27 }
28}
29
30impl ElementType for D2ElementType {
31 type Role = UniversalElementRole;
32
33 fn role(&self) -> Self::Role {
34 match self {
35 Self::Root => UniversalElementRole::Root,
36 _ => UniversalElementRole::None,
37 }
38 }
39}