use super::span::Span;

#[derive(Copy, Clone, Debug, Eq, PartialEq)]
pub enum Heading {
    H1,
    H2,
    H3,
    H4,
    H5,
    H6,
}

#[derive(Copy, Clone, Debug, Default, Eq, PartialEq)]
pub struct Style {
    /// # heading (large text)
    pub heading: Option<Heading>,

    /// > quoted (slightly dimmer color or other font style)
    pub quoted: bool,

    /// `code` (monospace, some other color)
    pub code: bool,

    /// self.strong* (emphasized, e.g. bold)
    pub strong: bool,

    /// _underline_
    pub underline: bool,

    /// ~strikethrough~
    pub strikethrough: bool,

    /// /italics/
    pub italics: bool,

    /// $small$
    pub small: bool,

    /// ^raised^
    pub raised: bool,
}

pub enum Item<'a> {
    Text {
        span: Span<'a>,
        style: Style,
    },

    CodeBlock {
        all: Span<'a>,
        language: Span<'a>,
        code: Span<'a>,
    },
}
