Struct ParseOptions

struct ParseOptions<'c> { ... }

Options for parser functions.

Fields

smart: bool

Punctuation (quotes, full-stops and hyphens) are converted into 'smart' punctuation.

# use comrak::{markdown_to_html, Options};
let mut options = Options::default();
assert_eq!(markdown_to_html("'Hello,' \"world\" ...", &options),
           "<p>'Hello,' &quot;world&quot; ...</p>\n");

options.parse.smart = true;
assert_eq!(markdown_to_html("'Hello,' \"world\" ...", &options),
           "<p>‘Hello,’ “world” …</p>\n");
default_info_string: Option<String>

The default info string for fenced code blocks.

# use comrak::{markdown_to_html, Options};
let mut options = Options::default();
assert_eq!(markdown_to_html("```\nfn hello();\n```\n", &options),
           "<pre><code>fn hello();\n</code></pre>\n");

options.parse.default_info_string = Some("rust".into());
assert_eq!(markdown_to_html("```\nfn hello();\n```\n", &options),
           "<pre><code class=\"language-rust\">fn hello();\n</code></pre>\n");
relaxed_tasklist_matching: bool

Whether or not a simple x or X is used for tasklist or any other symbol is allowed.

relaxed_autolinks: bool

Relax parsing of autolinks, allow links to be detected inside brackets and allow all url schemes. It is intended to allow a very specific type of autolink detection, such as [this http://and.com that] or {http://foo.com}, on a best can basis.

# use comrak::{markdown_to_html, Options};
let mut options = Options::default();
options.extension.autolink = true;
assert_eq!(markdown_to_html("[https://foo.com]", &options),
           "<p>[https://foo.com]</p>\n");

options.parse.relaxed_autolinks = true;
assert_eq!(markdown_to_html("[https://foo.com]", &options),
           "<p>[<a href=\"https://foo.com\">https://foo.com</a>]</p>\n");
broken_link_callback: Option<Arc<dyn BrokenLinkCallback + 'c>>

In case the parser encounters any potential links that have a broken reference (e.g [foo] when there is no [foo]: url entry at the bottom) the provided callback will be called with the reference name, both in normalized form and unmodified, and the returned pair will be used as the link destination and title if not None.

# use std::{str, sync::Arc};
# use comrak::{markdown_to_html, BrokenLinkReference, Options, ResolvedReference};
let cb = |link_ref: BrokenLinkReference| match link_ref.normalized {
    "foo" => Some(ResolvedReference {
        url: "https://www.rust-lang.org/".to_string(),
        title: "The Rust Language".to_string(),
    }),
    _ => None,
};

let mut options = Options::default();
options.parse.broken_link_callback = Some(Arc::new(cb));

let output = markdown_to_html(
    "# Cool input!\nWow look at this cool [link][foo]. A [broken link] renders as text.",
    &options,
);

assert_eq!(output,
           "<h1>Cool input!</h1>\n<p>Wow look at this cool \
           <a href=\"https://www.rust-lang.org/\" title=\"The Rust Language\">link</a>. \
           A [broken link] renders as text.</p>\n");

Implementations

impl<'c> Clone for ParseOptions<'c>

fn clone(self: &Self) -> ParseOptions<'c>

impl<'c> Debug for ParseOptions<'c>

fn fmt(self: &Self, f: &mut Formatter<'_>) -> Result

impl<'c> Default for ParseOptions<'c>

fn default() -> ParseOptions<'c>

impl<'c> Freeze for ParseOptions<'c>

impl<'c> RefUnwindSafe for ParseOptions<'c>

impl<'c> Send for ParseOptions<'c>

impl<'c> Sync for ParseOptions<'c>

impl<'c> Unpin for ParseOptions<'c>

impl<'c> UnsafeUnpin for ParseOptions<'c>

impl<'c> UnwindSafe for ParseOptions<'c>

impl<T> Any for ParseOptions<'c>

fn type_id(self: &Self) -> TypeId

impl<T> Borrow for ParseOptions<'c>

fn borrow(self: &Self) -> &T

impl<T> BorrowMut for ParseOptions<'c>

fn borrow_mut(self: &mut Self) -> &mut T

impl<T> CloneToUninit for ParseOptions<'c>

unsafe fn clone_to_uninit(self: &Self, dest: *mut u8)

impl<T> From for ParseOptions<'c>

fn from(t: T) -> T

Returns the argument unchanged.

impl<T> ToOwned for ParseOptions<'c>

fn to_owned(self: &Self) -> T
fn clone_into(self: &Self, target: &mut T)

impl<T, U> Into for ParseOptions<'c>

fn into(self: Self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of [From]<T> for U chooses to do.

impl<T, U> TryFrom for ParseOptions<'c>

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

impl<T, U> TryInto for ParseOptions<'c>

fn try_into(self: Self) -> Result<U, <U as TryFrom<T>>::Error>