limu 0.2.1

A diagram layout engine. It reads Mermaid and leaves the drawing to your program.
Documentation
//! The tokens of a use case diagram, as Pele's tokens.ts has them.

/// A token's type, Pele's T: Mermaid's token types, in an order that makes its token
/// categories ranges. WORD is USECASE to IDENTIFIER, and LABEL_TEXT is USECASE to
/// LABEL_SYMBOL.
#[allow(
    non_camel_case_types,
    clippy::upper_case_acronyms,
    clippy::enum_variant_names
)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord)]
#[repr(u8)]
pub(crate) enum T {
    EOF,
    USECASE,
    ACTOR,
    SYSTEM_BOUNDARY,
    END,
    DIRECTION,
    TD,
    TB,
    BT,
    LR,
    RL,
    NOTE,
    FOR,
    JSON,
    CLASS_DEF,
    CLASS,
    STYLE,
    INCLUDE,
    EXTEND,
    TRUE,
    FALSE,
    IDENTIFIER,
    NUMBER,
    AT,
    COMMA,
    COLON,
    HASH_COLOR,
    CSS_IDENTIFIER,
    CSS_ESCAPED_COMMA,
    DASH,
    DOT,
    PERCENT,
    CSS_PUNCTUATION,
    LABEL_PUNCTUATION,
    LABEL_SYMBOL,
    PLAIN_STRING,
    MARKDOWN_STRING,
    UNCLOSED_MARKDOWN_STRING,
    COMMENT,
    NEWLINE,
    ACC_DESCR_BLOCK,
    ACC_TITLE_LINE,
    ACC_DESCR_LINE,
    JSON_DECLARATION_START,
    JSON_OBJECT_LITERAL,
    UNCLOSED_JSON_OBJECT_LITERAL,
    GENERALIZATION,
    DEPENDENCY_ARROW,
    STEREOTYPE_START,
    STEREOTYPE_END,
    STEREOTYPE_TEXT,
    UNCLOSED_STEREOTYPE_TEXT,
    CLASS_SEPARATOR,
    FORWARD_SOLID,
    BACKWARD_SOLID,
    FORWARD_CIRCLE,
    BACKWARD_CIRCLE,
    FORWARD_CROSS,
    BACKWARD_CROSS,
    MARKERLESS_SOLID,
    METADATA_START,
    LBRACE,
    RBRACE,
    LBRACKET,
    RBRACKET,
    LPAREN,
    RPAREN,
}

/// The names of the token types, in their order, Pele's TOKEN_NAMES.
pub(crate) const TOKEN_NAMES: [&str; T::RPAREN as usize + 1] = [
    "EOF",
    "USECASE",
    "ACTOR",
    "SYSTEM_BOUNDARY",
    "END",
    "DIRECTION",
    "TD",
    "TB",
    "BT",
    "LR",
    "RL",
    "NOTE",
    "FOR",
    "JSON",
    "CLASS_DEF",
    "CLASS",
    "STYLE",
    "INCLUDE",
    "EXTEND",
    "TRUE",
    "FALSE",
    "IDENTIFIER",
    "NUMBER",
    "AT",
    "COMMA",
    "COLON",
    "HASH_COLOR",
    "CSS_IDENTIFIER",
    "CSS_ESCAPED_COMMA",
    "DASH",
    "DOT",
    "PERCENT",
    "CSS_PUNCTUATION",
    "LABEL_PUNCTUATION",
    "LABEL_SYMBOL",
    "PLAIN_STRING",
    "MARKDOWN_STRING",
    "UNCLOSED_MARKDOWN_STRING",
    "COMMENT",
    "NEWLINE",
    "ACC_DESCR_BLOCK",
    "ACC_TITLE_LINE",
    "ACC_DESCR_LINE",
    "JSON_DECLARATION_START",
    "JSON_OBJECT_LITERAL",
    "UNCLOSED_JSON_OBJECT_LITERAL",
    "GENERALIZATION",
    "DEPENDENCY_ARROW",
    "STEREOTYPE_START",
    "STEREOTYPE_END",
    "STEREOTYPE_TEXT",
    "UNCLOSED_STEREOTYPE_TEXT",
    "CLASS_SEPARATOR",
    "FORWARD_SOLID",
    "BACKWARD_SOLID",
    "FORWARD_CIRCLE",
    "BACKWARD_CIRCLE",
    "FORWARD_CROSS",
    "BACKWARD_CROSS",
    "MARKERLESS_SOLID",
    "METADATA_START",
    "LBRACE",
    "RBRACE",
    "LBRACKET",
    "RBRACKET",
    "LPAREN",
    "RPAREN",
];

impl T {
    /// The token type's name, as Pele's TOKEN_NAMES gives it.
    pub(crate) fn name(self) -> &'static str {
        TOKEN_NAMES[self as usize]
    }
}