1#![cfg_attr(docsrs, feature(doc_cfg))]
52#![deny(
53 missing_docs,
54 missing_debug_implementations,
55 missing_copy_implementations,
56 trivial_casts,
57 trivial_numeric_casts,
58 unstable_features,
59 unused_import_braces
60)]
61#![allow(
62 unknown_lints,
63 clippy::doc_markdown,
64 cyclomatic_complexity,
65 clippy::bool_to_int_with_if,
66 clippy::too_many_arguments
67)]
68
69pub mod adapters;
70pub mod arena_tree;
71pub mod html;
72pub mod nodes;
73pub mod plugins;
74
75mod character_set;
76mod cm;
77mod ctype;
78mod entity;
79mod parser;
80mod scanners;
81mod strings;
82#[cfg(test)]
83mod tests;
84mod xml;
85
86pub use cm::escape_inline as escape_commonmark_inline;
87pub use cm::escape_link_destination as escape_commonmark_link_destination;
88pub use cm::format_document as format_commonmark;
89pub use cm::format_document_with_plugins as format_commonmark_with_plugins;
90pub use html::format_document as format_html;
91pub use html::format_document_with_plugins as format_html_with_plugins;
92#[doc(inline)]
93pub use html::Anchorizer;
94pub use parser::options;
95pub use parser::{parse_document, Options, ResolvedReference};
96pub use typed_arena::Arena;
97pub use xml::format_document as format_xml;
98pub use xml::format_document_with_plugins as format_xml_with_plugins;
99
100#[deprecated(
101 since = "0.45.0",
102 note = "use `comrak::options::Extension` instead of `comrak::ExtensionOptions`"
103)]
104pub type ExtensionOptions<'c> = parser::options::Extension<'c>;
106#[deprecated(
107 since = "0.45.0",
108 note = "use `comrak::options::Parse` instead of `comrak::ParseOptions`"
109)]
110pub type ParseOptions<'c> = parser::options::Parse<'c>;
112#[deprecated(
113 since = "0.45.0",
114 note = "use `comrak::options::Render` instead of `comrak::RenderOptions `"
115)]
116pub type RenderOptions = parser::options::Render;
118
119#[deprecated(
120 since = "0.45.0",
121 note = "use `comrak::options::BrokenLinkReference` instead of `comrak::BrokenLinkReference`"
122)]
123pub type BrokenLinkReference<'l> = parser::options::BrokenLinkReference<'l>;
125#[deprecated(
126 since = "0.45.0",
127 note = "use `comrak::options::ListStyleType` instead of `comrak::ListStyleType `"
128)]
129pub type ListStyleType = parser::options::ListStyleType;
131#[deprecated(
132 since = "0.45.0",
133 note = "use `comrak::options::Plugins` instead of `comrak::Plugins`"
134)]
135pub type Plugins<'p> = parser::options::Plugins<'p>;
137#[deprecated(
138 since = "0.45.0",
139 note = "use `comrak::options::RenderPlugins` instead of `comrak::RenderPlugins`"
140)]
141pub type RenderPlugins<'p> = parser::options::RenderPlugins<'p>;
143#[deprecated(
144 since = "0.45.0",
145 note = "use `comrak::options::WikiLinksMode` instead of `comrak::WikiLinksMode `"
146)]
147pub type WikiLinksMode = parser::options::WikiLinksMode;
149
150#[cfg(feature = "bon")]
151#[deprecated(
152 since = "0.45.0",
153 note = "use `comrak::options::ExtensionBuilder` instead of `comrak::ExtensionOptionsBuilder`"
154)]
155pub type ExtensionOptionsBuilder<'c> = parser::options::ExtensionBuilder<'c>;
157#[cfg(feature = "bon")]
158#[deprecated(
159 since = "0.45.0",
160 note = "use `comrak::options::ParseBuilder` instead of `comrak::ParseOptionsBuilder`"
161)]
162pub type ParseOptionsBuilder<'c> = parser::options::ParseBuilder<'c>;
164#[cfg(feature = "bon")]
165#[deprecated(
166 since = "0.45.0",
167 note = "use `comrak::options::RenderBuilder` instead of `comrak::RenderOptionsBuilder `"
168)]
169pub type RenderOptionsBuilder = parser::options::RenderBuilder;
171#[cfg(feature = "bon")]
172#[deprecated(
173 since = "0.45.0",
174 note = "use `comrak::options::PluginsBuilder` instead of `comrak::PluginsBuilder`"
175)]
176pub type PluginsBuilder<'p> = parser::options::PluginsBuilder<'p>;
178#[cfg(feature = "bon")]
179#[deprecated(
180 since = "0.45.0",
181 note = "use `comrak::options::RenderPluginsBuilder` instead of `comrak::RenderPluginsBuilder`"
182)]
183pub type RenderPluginsBuilder<'p> = parser::options::RenderPluginsBuilder<'p>;
185
186pub fn markdown_to_html(md: &str, options: &Options) -> String {
190 markdown_to_html_with_plugins(md, options, &options::Plugins::default())
191}
192
193pub fn markdown_to_html_with_plugins(
197 md: &str,
198 options: &Options,
199 plugins: &options::Plugins,
200) -> String {
201 let arena = Arena::new();
202 let root = parse_document(&arena, md, options);
203 let mut out = String::new();
204 format_html_with_plugins(root, options, &mut out, plugins).unwrap();
205 out
206}
207
208pub fn version() -> &'static str {
210 env!("CARGO_PKG_VERSION")
211}
212
213pub fn markdown_to_commonmark(md: &str, options: &Options) -> String {
215 let arena = Arena::new();
216 let root = parse_document(&arena, md, options);
217 let mut out = String::new();
218 format_commonmark(root, options, &mut out).unwrap();
219 out
220}
221
222pub fn markdown_to_commonmark_xml(md: &str, options: &Options) -> String {
226 markdown_to_commonmark_xml_with_plugins(md, options, &options::Plugins::default())
227}
228
229pub fn markdown_to_commonmark_xml_with_plugins(
233 md: &str,
234 options: &Options,
235 plugins: &options::Plugins,
236) -> String {
237 let arena = Arena::new();
238 let root = parse_document(&arena, md, options);
239 let mut out = String::new();
240 format_xml_with_plugins(root, options, &mut out, plugins).unwrap();
241 out
242}