#![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
)]
pub mod adapters;
pub mod arena_tree;
pub mod html;
pub mod nodes;
pub mod plugins;
mod character_set;
mod cm;
mod ctype;
mod entity;
mod parser;
mod scanners;
mod strings;
#[cfg(test)]
mod tests;
mod xml;
pub use cm::escape_inline as escape_commonmark_inline;
pub use cm::escape_link_destination as escape_commonmark_link_destination;
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;
#[doc(inline)]
pub use html::Anchorizer;
pub use parser::options;
pub use parser::{parse_document, Options, ResolvedReference};
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;
#[deprecated(
since = "0.45.0",
note = "use `comrak::options::Extension` instead of `comrak::ExtensionOptions`"
)]
pub type ExtensionOptions<'c> = parser::options::Extension<'c>;
#[deprecated(
since = "0.45.0",
note = "use `comrak::options::Parse` instead of `comrak::ParseOptions`"
)]
pub type ParseOptions<'c> = parser::options::Parse<'c>;
#[deprecated(
since = "0.45.0",
note = "use `comrak::options::Render` instead of `comrak::RenderOptions `"
)]
pub type RenderOptions = parser::options::Render;
#[deprecated(
since = "0.45.0",
note = "use `comrak::options::BrokenLinkReference` instead of `comrak::BrokenLinkReference`"
)]
pub type BrokenLinkReference<'l> = parser::options::BrokenLinkReference<'l>;
#[deprecated(
since = "0.45.0",
note = "use `comrak::options::ListStyleType` instead of `comrak::ListStyleType `"
)]
pub type ListStyleType = parser::options::ListStyleType;
#[deprecated(
since = "0.45.0",
note = "use `comrak::options::Plugins` instead of `comrak::Plugins`"
)]
pub type Plugins<'p> = parser::options::Plugins<'p>;
#[deprecated(
since = "0.45.0",
note = "use `comrak::options::RenderPlugins` instead of `comrak::RenderPlugins`"
)]
pub type RenderPlugins<'p> = parser::options::RenderPlugins<'p>;
#[deprecated(
since = "0.45.0",
note = "use `comrak::options::WikiLinksMode` instead of `comrak::WikiLinksMode `"
)]
pub type WikiLinksMode = parser::options::WikiLinksMode;
#[cfg(feature = "bon")]
#[deprecated(
since = "0.45.0",
note = "use `comrak::options::ExtensionBuilder` instead of `comrak::ExtensionOptionsBuilder`"
)]
pub type ExtensionOptionsBuilder<'c> = parser::options::ExtensionBuilder<'c>;
#[cfg(feature = "bon")]
#[deprecated(
since = "0.45.0",
note = "use `comrak::options::ParseBuilder` instead of `comrak::ParseOptionsBuilder`"
)]
pub type ParseOptionsBuilder<'c> = parser::options::ParseBuilder<'c>;
#[cfg(feature = "bon")]
#[deprecated(
since = "0.45.0",
note = "use `comrak::options::RenderBuilder` instead of `comrak::RenderOptionsBuilder `"
)]
pub type RenderOptionsBuilder = parser::options::RenderBuilder;
#[cfg(feature = "bon")]
#[deprecated(
since = "0.45.0",
note = "use `comrak::options::PluginsBuilder` instead of `comrak::PluginsBuilder`"
)]
pub type PluginsBuilder<'p> = parser::options::PluginsBuilder<'p>;
#[cfg(feature = "bon")]
#[deprecated(
since = "0.45.0",
note = "use `comrak::options::RenderPluginsBuilder` instead of `comrak::RenderPluginsBuilder`"
)]
pub type RenderPluginsBuilder<'p> = parser::options::RenderPluginsBuilder<'p>;
pub fn markdown_to_html(md: &str, options: &Options) -> String {
markdown_to_html_with_plugins(md, options, &options::Plugins::default())
}
pub fn markdown_to_html_with_plugins(
md: &str,
options: &Options,
plugins: &options::Plugins,
) -> String {
let arena = Arena::new();
let root = parse_document(&arena, md, options);
let mut out = String::new();
format_html_with_plugins(root, options, &mut out, plugins).unwrap();
out
}
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 out = String::new();
format_commonmark(root, options, &mut out).unwrap();
out
}
pub fn markdown_to_commonmark_xml(md: &str, options: &Options) -> String {
markdown_to_commonmark_xml_with_plugins(md, options, &options::Plugins::default())
}
pub fn markdown_to_commonmark_xml_with_plugins(
md: &str,
options: &Options,
plugins: &options::Plugins,
) -> String {
let arena = Arena::new();
let root = parse_document(&arena, md, options);
let mut out = String::new();
format_xml_with_plugins(root, options, &mut out, plugins).unwrap();
out
}