Skip to main content

quillmark_core/
lib.rs

1//! # Quillmark Core Overview
2//!
3//! Core types and functionality for the Quillmark format-first Markdown rendering system.
4//!
5//! ## Features
6//!
7//! This crate provides the foundational types and traits for Quillmark:
8//!
9//! - **Parsing**: card-yaml block extraction (`~~~card-yaml` metadata blocks)
10//! - **Format model**: [`QuillSource`] type for managing format bundles with in-memory file system
11//! - **Backend trait**: Extensible interface for implementing output format backends
12//! - **Error handling**: Structured diagnostics with source location tracking
13//! - **Utilities**: TOML⇄YAML conversion helpers
14//!
15//! ## Quick Start
16//!
17//! ```no_run
18//! use quillmark_core::Document;
19//!
20//! // Parse markdown with a card-yaml metadata block
21//! let markdown = "~~~card-yaml\n$quill: my_quill\n$kind: main\ntitle: Example\n~~~\n\n# Content";
22//! let doc = Document::from_markdown(markdown).unwrap();
23//! let title = doc.main()
24//!     .payload()
25//!     .get("title")
26//!     .and_then(|v| v.as_str())
27//!     .unwrap_or("Untitled");
28//! assert_eq!(title, "Example");
29//! ```
30//!
31//! ## Architecture
32//!
33//! The crate is organized into modules:
34//!
35//! - [`document`]: Markdown parsing with card-yaml block support
36//! - [`backend`]: Backend trait for output format implementations
37//! - [`error`]: Structured error handling and diagnostics
38//! - [`types`]: Core rendering types (OutputFormat, Artifact, RenderOptions)
39//! - [`quill`]: QuillSource bundle and related types
40//!
41//! ## Further Reading
42//!
43//! - [markdown-spec.md](https://github.com/quillmark-org/quillmark/blob/main/prose/references/markdown-spec.md) - Quillmark Markdown parsing specification
44//! - [Examples](https://github.com/quillmark-org/quillmark/tree/main/crates/core/examples) - Working examples
45
46pub mod document;
47pub use document::{Card, Document, EditError, ParseOutput, Payload, PayloadItem};
48
49pub mod backend;
50pub use backend::Backend;
51
52pub mod error;
53pub use error::{Diagnostic, Location, ParseError, RenderError, RenderResult, Severity};
54
55pub mod types;
56pub use types::{Artifact, OutputFormat, RenderOptions};
57
58pub mod session;
59pub use session::RenderSession;
60
61pub mod quill;
62pub use quill::{FileTreeNode, QuillIgnore, QuillSource};
63
64pub mod value;
65pub use value::QuillValue;
66
67pub mod normalize;
68
69pub mod version;
70pub use version::{QuillReference, Version, VersionSelector};