libhanzzok 0.1.5

Hanzzok compiler library
Documentation
pub use block_constructor::{BlockConstructorForm, BlockConstructorNode};
pub use decorator_chain::{DecoratorChainNode, DecoratorNode};
pub use inline_constructor::InlineConstructorNode;
pub use inline_object::InlineObjectNode;
pub use raw::Raw;
pub use text::TextNode;
#[cfg(target_arch = "wasm32")]
pub use wasm_support::HanzzokAstNodeWrapper;

use crate::syntax::Token;

mod block_constructor;
mod decorator_chain;
mod inline_constructor;
mod inline_object;
mod raw;
mod text;

#[cfg(target_arch = "wasm32")]
mod wasm_support;

#[derive(Clone, Debug)]
pub enum HanzzokAstNode {
    BlockConstructor(BlockConstructorNode),
    InlineObjectBlock(Vec<InlineObjectNode>),
    Newline(Vec<Token>),
}

impl Raw for HanzzokAstNode {
    fn raw(&self) -> Vec<Token> {
        match self {
            HanzzokAstNode::BlockConstructor(node) => node.tokens.clone(),
            HanzzokAstNode::InlineObjectBlock(nodes) => nodes.raw(),
            HanzzokAstNode::Newline(tokens) => tokens.clone(),
        }
    }
}