markdown-ppp 2.9.2

Feature-rich Markdown Parsing and Pretty-Printing library
Documentation
use crate::ast::*;
use crate::printer::{inline::ToDocInline, ToDoc};
use pretty::{Arena, DocAllocator, DocBuilder};
use std::rc::Rc;

impl<'a> ToDoc<'a> for Heading {
    fn to_doc(
        &self,
        _config: Rc<crate::printer::config::Config>,
        arena: &'a Arena<'a>,
    ) -> DocBuilder<'a, Arena<'a>, ()> {
        match self.kind {
            HeadingKind::Atx(level) => {
                let hashes = "#".repeat(level as usize);
                arena
                    .text(hashes)
                    .append(arena.space())
                    .append(self.content.to_doc_inline(false, arena))
            }
            HeadingKind::Setext(SetextHeading::Level1) => self
                .content
                .to_doc_inline(true, arena)
                .append(arena.hardline())
                .append(arena.text("==========")),
            HeadingKind::Setext(SetextHeading::Level2) => self
                .content
                .to_doc_inline(true, arena)
                .append(arena.hardline())
                .append(arena.text("----------")),
        }
    }
}