zuzu-rust 0.2.0

Rust implementation of ZuzuScript
Documentation
use crate::span::Span;

#[derive(Debug, Clone, PartialEq, Eq)]
pub enum TokenKind {
    Keyword(&'static str),
    Identifier(String),
    Number(String),
    String(String),
    BinaryString(Vec<u8>),
    Regex {
        pattern: String,
        parts: Vec<TemplatePart>,
        flags: String,
    },
    Template(Vec<TemplatePart>),
    Operator(String),
    Punct(char),
    Eof,
}

#[derive(Debug, Clone, PartialEq, Eq)]
pub struct Token {
    pub kind: TokenKind,
    pub span: Span,
}

impl Token {
    pub fn new(kind: TokenKind, span: Span) -> Self {
        Self { kind, span }
    }
}

#[derive(Debug, Clone, PartialEq, Eq)]
pub enum TemplatePart {
    Text { line: usize, value: String },
    Expr { line: usize, source: String },
}