1#![cfg_attr(docsrs, feature(doc_cfg))]
49#![deny(
50 missing_docs,
51 missing_debug_implementations,
52 missing_copy_implementations,
53 trivial_casts,
54 trivial_numeric_casts,
55 unstable_features,
56 unused_import_braces
57)]
58#![allow(
59 unknown_lints,
60 clippy::doc_markdown,
61 cyclomatic_complexity,
62 clippy::bool_to_int_with_if,
63 clippy::too_many_arguments
64)]
65
66pub mod adapters;
67pub mod arena_tree;
68mod character_set;
69mod cm;
70mod ctype;
71mod entity;
72pub mod html;
73pub mod nodes;
74mod parser;
75pub mod plugins;
76mod scanners;
77mod strings;
78#[cfg(test)]
79mod tests;
80mod xml;
81
82pub use cm::escape_inline as escape_commonmark_inline;
83pub use cm::escape_link_destination as escape_commonmark_link_destination;
84pub use cm::format_document as format_commonmark;
85pub use cm::format_document_with_plugins as format_commonmark_with_plugins;
86pub use html::format_document as format_html;
87pub use html::format_document_with_plugins as format_html_with_plugins;
88#[doc(inline)]
89pub use html::Anchorizer;
90#[allow(deprecated)]
91pub use parser::parse_document_with_broken_link_callback;
92pub use parser::{
93 parse_document, BrokenLinkCallback, BrokenLinkReference, ExtensionOptions, ListStyleType,
94 Options, ParseOptions, Plugins, RenderOptions, RenderPlugins, ResolvedReference, URLRewriter,
95 WikiLinksMode,
96};
97pub use typed_arena::Arena;
98pub use xml::format_document as format_xml;
99pub use xml::format_document_with_plugins as format_xml_with_plugins;
100
101#[cfg(feature = "bon")]
102pub use parser::{
103 ExtensionOptionsBuilder, ParseOptionsBuilder, PluginsBuilder, RenderOptionsBuilder,
104 RenderPluginsBuilder,
105};
106
107pub type ComrakExtensionOptions<'c> = ExtensionOptions<'c>;
109pub type ComrakOptions<'c> = Options<'c>;
111pub type ComrakParseOptions<'c> = ParseOptions<'c>;
113pub type ComrakPlugins<'a> = Plugins<'a>;
115pub type ComrakRenderOptions = RenderOptions;
117pub type ComrakRenderPlugins<'a> = RenderPlugins<'a>;
119
120pub fn markdown_to_html(md: &str, options: &Options) -> String {
124 markdown_to_html_with_plugins(md, options, &Plugins::default())
125}
126
127pub fn markdown_to_html_with_plugins(md: &str, options: &Options, plugins: &Plugins) -> String {
131 let arena = Arena::new();
132 let root = parse_document(&arena, md, options);
133 let mut out = String::new();
134 format_html_with_plugins(root, options, &mut out, plugins).unwrap();
135 out
136}
137
138pub fn version() -> &'static str {
140 env!("CARGO_PKG_VERSION")
141}
142
143pub fn markdown_to_commonmark(md: &str, options: &Options) -> String {
145 let arena = Arena::new();
146 let root = parse_document(&arena, md, options);
147 let mut out = String::new();
148 format_commonmark(root, options, &mut out).unwrap();
149 out
150}
151
152pub fn markdown_to_commonmark_xml(md: &str, options: &Options) -> String {
155 markdown_to_commonmark_xml_with_plugins(md, options, &Plugins::default())
156}
157
158pub fn markdown_to_commonmark_xml_with_plugins(
161 md: &str,
162 options: &Options,
163 plugins: &Plugins,
164) -> String {
165 let arena = Arena::new();
166 let root = parse_document(&arena, md, options);
167 let mut out = String::new();
168 format_xml_with_plugins(root, options, &mut out, plugins).unwrap();
169 out
170}