katana_markdown_engine/
lib.rs1#![deny(warnings, clippy::all)]
2#![allow(
3 missing_docs,
4 clippy::missing_errors_doc,
5 clippy::module_name_repetitions
6)]
7
8pub mod document;
9pub mod error;
10pub mod input;
11pub mod metadata;
12pub mod source;
13
14mod parser;
15
16pub use document::{
17 CodeBlockRole, DescriptionItem, DiagramKind, EmojiNode, HeadingNode, HtmlBlockRole,
18 KmeDocument, KmeNode, KmeNodeId, KmeNodeKind, ListNode, TableAlignment, TableCell, TableNode,
19 TableRow,
20};
21pub use error::KmeError;
22pub use input::MarkdownInput;
23pub use metadata::{
24 ConflictedTarget, ContextAnchor, MetadataDocument, MetadataEntry, MetadataReconcileRequest,
25 MetadataReconcileResult, MetadataResolver, MetadataTarget, TargetResolution,
26 TargetResolutionKind, UnresolvedTarget,
27};
28pub use source::{ByteRange, LineColumn, LineColumnRange, RawSnippet, SourceSpan, TextFingerprint};
29
30pub fn parse_markdown(input: MarkdownInput) -> Result<KmeDocument, KmeError> {
31 parser::MarkdownParser::new().parse(input)
32}
33
34pub fn reconcile_metadata_targets(
35 old_document: &KmeDocument,
36 new_document: &KmeDocument,
37 metadata: &MetadataDocument,
38) -> Vec<TargetResolution> {
39 MetadataResolver::new().reconcile(old_document, new_document, metadata)
40}
41
42pub fn reconcile_metadata(request: MetadataReconcileRequest) -> MetadataReconcileResult {
43 MetadataResolver::new().reconcile_request(request)
44}