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;
90#[doc(inline)]
91pub use html::Anchorizer;
92pub use html::format_document as format_html;
93pub use html::format_document_with_plugins as format_html_with_plugins;
94pub use nodes::Node;
95pub use parser::options;
96pub use parser::{Options, ResolvedReference, parse_document};
97pub use xml::format_document as format_xml;
98pub use xml::format_document_with_plugins as format_xml_with_plugins;
99
100pub type Arena<'a> = typed_arena::Arena<nodes::AstNode<'a>>;
102
103pub fn markdown_to_html(md: &str, options: &Options) -> String {
107 markdown_to_html_with_plugins(md, options, &options::Plugins::default())
108}
109
110pub fn markdown_to_html_with_plugins(
114 md: &str,
115 options: &Options,
116 plugins: &options::Plugins,
117) -> String {
118 let arena = Arena::new();
119 let root = parse_document(&arena, md, options);
120 let mut out = String::new();
121 format_html_with_plugins(root, options, &mut out, plugins).unwrap();
122 out
123}
124
125pub fn version() -> &'static str {
127 env!("CARGO_PKG_VERSION")
128}
129
130pub fn markdown_to_commonmark(md: &str, options: &Options) -> String {
132 let arena = Arena::new();
133 let root = parse_document(&arena, md, options);
134 let mut out = String::new();
135 format_commonmark(root, options, &mut out).unwrap();
136 out
137}
138
139pub fn markdown_to_commonmark_xml(md: &str, options: &Options) -> String {
143 markdown_to_commonmark_xml_with_plugins(md, options, &options::Plugins::default())
144}
145
146pub fn markdown_to_commonmark_xml_with_plugins(
150 md: &str,
151 options: &Options,
152 plugins: &options::Plugins,
153) -> String {
154 let arena = Arena::new();
155 let root = parse_document(&arena, md, options);
156 let mut out = String::new();
157 format_xml_with_plugins(root, options, &mut out, plugins).unwrap();
158 out
159}