pub mod ast;
pub mod diff;
mod frontmatter;
mod handler;
mod handlers;
mod headings;
mod links;
mod render;
mod reqs;
pub use frontmatter::{Frontmatter, FrontmatterFormat, parse_frontmatter, strip_frontmatter};
pub use handler::{
BoxedHandler, BoxedInlineCodeHandler, BoxedLinkResolver, BoxedReqHandler, CodeBlockHandler,
CodeBlockOutput, DefaultReqHandler, HeadInjection, InlineCodeHandler, LinkResolver, ReqHandler,
};
pub use headings::{Heading, slugify};
pub use links::resolve_link;
pub use render::{DocElement, Document, Paragraph, RenderOptions, render};
pub use reqs::{
ExtractedReqs, InlineCodeSpan, ReqDefinition, ReqLevel, ReqMetadata, ReqStatus, ReqWarning,
ReqWarningKind, Rfc2119Keyword, RuleId, SourceSpan, detect_rfc2119_keywords, parse_rule_id,
};
pub use ast::{Alignment, Block, Inline, parse as parse_ast, render_to_markdown};
pub use diff::{diff_markdown, diff_markdown_inline};
#[cfg(feature = "highlight")]
pub use handlers::ArboriumHandler;
#[cfg(feature = "highlight")]
pub use handlers::{CompareHandler, CompareSection};
#[cfg(feature = "aasvg")]
pub use handlers::AasvgHandler;
#[cfg(feature = "pikru")]
pub use handlers::PikruHandler;
pub use handlers::MermaidHandler;
pub use handlers::TermHandler;
#[derive(Debug, thiserror::Error)]
pub enum Error {
#[error("frontmatter parse error: {0}")]
FrontmatterParse(String),
#[error("duplicate requirement ID: {0}")]
DuplicateReq(String),
#[error("code block handler error for language '{language}': {message}")]
CodeBlockHandler { language: String, message: String },
}
pub type Result<T> = std::result::Result<T, Error>;