ndg_commonmark/lib.rs
1//! # NDG - A documentation generator for Nix/OS projects
2//!
3//! This is a high-performance Markdown processor designed for Nix, `NixOS` and Nixpkgs documentation
4//! featuring AST-based processing with role markup, autolinks, GFM support and more.
5//!
6//! ## Quick Start
7//!
8//! ```rust
9//! use ndg_commonmark::{MarkdownProcessor, MarkdownOptions};
10//!
11//! let processor = MarkdownProcessor::new(MarkdownOptions::default());
12//! let result = processor.render("# Hello World\n\nThis is **bold** text.");
13//!
14//! println!("HTML: {}", result.html);
15//! println!("Title: {:?}", result.title);
16//! println!("Headers: {:?}", result.headers);
17//! ```
18//!
19//! ## Configuration
20//!
21//! ```rust
22//! use ndg_commonmark::{MarkdownProcessor, MarkdownOptions};
23//!
24//! let mut options = MarkdownOptions::default();
25//! options.gfm = true; // Enable GitHub Flavored Markdown
26//! options.nixpkgs = true; // Enable NixOS-specific extensions
27//! options.manpage_urls_path = Some("manpage-urls.json".to_string());
28//!
29//! let processor = MarkdownProcessor::new(options);
30//! ```
31
32pub mod processor;
33pub mod syntax;
34mod types;
35pub mod utils;
36
37// Re-export extension functions for third-party use
38#[cfg(feature = "gfm")]
39pub use crate::processor::apply_gfm_extensions;
40#[cfg(feature = "ndg-flavored")]
41pub use crate::processor::process_option_references;
42#[cfg(any(feature = "nixpkgs", feature = "ndg-flavored"))]
43pub use crate::processor::process_role_markup;
44#[cfg(feature = "nixpkgs")]
45pub use crate::processor::{process_block_elements, process_file_includes, process_inline_anchors};
46pub use crate::{
47 processor::{AstTransformer, MarkdownOptions, MarkdownProcessor},
48 syntax::{SyntaxConfig, SyntaxError, SyntaxHighlighter, SyntaxManager, create_default_manager},
49 types::{Header, MarkdownResult},
50};