libhanzzok 0.1.5

Hanzzok compiler library
Documentation
use core::fmt;

use crate::core::{Span, Spanned};

use super::{DecoratorChainNode, InlineConstructorNode, Raw, TextNode};

#[derive(Clone, Debug)]
pub enum InlineObjectNode {
    DecoratorChain(DecoratorChainNode),
    InlineConstructor(InlineConstructorNode),
    Text(TextNode),
}

impl Raw for InlineObjectNode {
    fn raw(&self) -> Vec<crate::syntax::Token> {
        match self {
            InlineObjectNode::DecoratorChain(node) => node.raw(),
            InlineObjectNode::InlineConstructor(node) => node.raw(),
            InlineObjectNode::Text(node) => node.raw(),
        }
    }
}

impl Spanned for InlineObjectNode {
    fn span(&self) -> Span {
        match self {
            InlineObjectNode::DecoratorChain(node) => node.span(),
            InlineObjectNode::InlineConstructor(node) => node.span(),
            InlineObjectNode::Text(node) => node.span(),
        }
    }
}

impl fmt::Display for InlineObjectNode {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        match self {
            InlineObjectNode::DecoratorChain(node) => node.fmt(f),
            InlineObjectNode::InlineConstructor(node) => node.fmt(f),
            InlineObjectNode::Text(node) => node.fmt(f),
        }
    }
}