Skip to main content

katana_markdown_engine/
lib.rs

1#![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}