#![cfg_attr(docsrs, feature(doc_cfg))]
#![deny(
missing_docs,
missing_debug_implementations,
missing_copy_implementations,
trivial_casts,
trivial_numeric_casts,
unstable_features,
unused_import_braces
)]
#![allow(
unknown_lints,
clippy::doc_markdown,
cyclomatic_complexity,
clippy::bool_to_int_with_if,
clippy::too_many_arguments
)]
use std::io::BufWriter;
pub mod adapters;
pub mod arena_tree;
mod cm;
mod ctype;
mod entity;
pub mod html;
pub mod nodes;
mod parser;
pub mod plugins;
mod scanners;
mod strings;
#[cfg(test)]
mod tests;
mod xml;
pub use cm::format_document as format_commonmark;
pub use cm::format_document_with_plugins as format_commonmark_with_plugins;
pub use html::format_document as format_html;
pub use html::format_document_with_plugins as format_html_with_plugins;
pub use html::Anchorizer;
pub use parser::{
parse_document, parse_document_with_broken_link_callback, ExtensionOptions,
ExtensionOptionsBuilder, ListStyleType, Options, ParseOptions, ParseOptionsBuilder, Plugins,
PluginsBuilder, RenderOptions, RenderOptionsBuilder, RenderPlugins, RenderPluginsBuilder,
};
pub use typed_arena::Arena;
pub use xml::format_document as format_xml;
pub use xml::format_document_with_plugins as format_xml_with_plugins;
pub type ComrakExtensionOptions = ExtensionOptions;
pub type ComrakOptions = Options;
pub type ComrakParseOptions = ParseOptions;
pub type ComrakPlugins<'a> = Plugins<'a>;
pub type ComrakRenderOptions = RenderOptions;
pub type ComrakRenderPlugins<'a> = RenderPlugins<'a>;
pub fn markdown_to_html(md: &str, options: &Options) -> String {
markdown_to_html_with_plugins(md, options, &Plugins::default())
}
pub fn markdown_to_html_with_plugins(md: &str, options: &Options, plugins: &Plugins) -> String {
let arena = Arena::new();
let root = parse_document(&arena, md, options);
let mut bw = BufWriter::new(Vec::new());
format_html_with_plugins(root, options, &mut bw, plugins).unwrap();
String::from_utf8(bw.into_inner().unwrap()).unwrap()
}
pub fn version() -> &'static str {
env!("CARGO_PKG_VERSION")
}
pub fn markdown_to_commonmark(md: &str, options: &Options) -> String {
let arena = Arena::new();
let root = parse_document(&arena, md, options);
let mut bw = BufWriter::new(Vec::new());
format_commonmark(root, options, &mut bw).unwrap();
String::from_utf8(bw.into_inner().unwrap()).unwrap()
}
pub fn markdown_to_commonmark_xml(md: &str, options: &Options) -> String {
markdown_to_commonmark_xml_with_plugins(md, options, &Plugins::default())
}
pub fn markdown_to_commonmark_xml_with_plugins(
md: &str,
options: &Options,
plugins: &Plugins,
) -> String {
let arena = Arena::new();
let root = parse_document(&arena, md, options);
let mut bw = BufWriter::new(Vec::new());
format_xml_with_plugins(root, options, &mut bw, plugins).unwrap();
String::from_utf8(bw.into_inner().unwrap()).unwrap()
}