mod ast;
mod diagnostic;
mod frontmatter;
mod lex;
mod lower;
mod parse;
mod print;
mod property;
mod resolve;
mod skeleton;
mod style;
mod target;
pub use diagnostic::{MarkdownError, MarkdownLanguage};
pub use print::{
MarkdownPrinter, TextField, Unprintable, UnprintableModel, UnprintableOwner, UnprintableReason,
};
use crate::diagnostic::{Import, ImportParts};
use ast::Document;
use diagnostic::Diagnostics;
use skeleton::Skeleton;
pub type MarkdownImport = Import<MarkdownLanguage>;
pub type MarkdownImportParts = ImportParts<MarkdownLanguage>;
#[derive(Debug)]
pub struct MarkdownParse {
document: Document,
pub errors: Vec<MarkdownError>,
}
impl MarkdownParse {
pub fn parse(source: &str) -> Self {
let mut diagnostics = Diagnostics::default();
let skeleton = Skeleton::read(source, &mut diagnostics);
let document = Document::parse(skeleton, &mut diagnostics);
let (errors, _no_warnings) = diagnostics.into_sorted_parts();
Self { document, errors }
}
}