[][src]Function parse_hyperlinks::parser::take_link

pub fn take_link(input: &str) -> IResult<&str, (&str, Link<'_>)>

Consumes the input until it finds a Markdown, RestructuredText, Asciidoc or HTML formatted inline link (Text2Dest), reference link (Text2Label), link reference definition (Label2Dest) or reference alias (Label2Label).

The parser consumes the finding and returns Ok((remaining_input, (skipped_input, Link))) or some error.

Basic usage

use parse_hyperlinks::parser::Link;
use parse_hyperlinks::parser::take_link;
use std::borrow::Cow;

let i = r#"foo
[a]: b 'c'
.. _d: e
---[f](g 'h')---`i <j>`__---
---[k][l]---
---<a href="m" title="n">o</a>---
---`p <q>`_---
"#;

let (i, r) = take_link(i).unwrap();
assert_eq!(r.0, "foo\n");
assert_eq!(r.1, Link::Label2Dest(Cow::from("a"), Cow::from("b"), Cow::from("c")));
let (i, r) = take_link(i).unwrap();
assert_eq!(r.1, Link::Label2Dest(Cow::from("d"), Cow::from("e"), Cow::from("")));
let (i, r) = take_link(i).unwrap();
assert_eq!(r.1, Link::Text2Dest(Cow::from("f"), Cow::from("g"), Cow::from("h")));
let (i, r) = take_link(i).unwrap();
assert_eq!(r.1, Link::Text2Dest(Cow::from("i"), Cow::from("j"), Cow::from("")));
let (i, r) = take_link(i).unwrap();
assert_eq!(r.1, Link::Text2Label(Cow::from("k"), Cow::from("l")));
let (i, r) = take_link(i).unwrap();
assert_eq!(r.0, "---\n---");
assert_eq!(r.1, Link::Text2Dest(Cow::from("o"), Cow::from("m"), Cow::from("n")));
let (i, r) = take_link(i).unwrap();
assert_eq!(r.0, "---\n---");
assert_eq!(r.1, Link::TextLabel2Dest(Cow::from("p"), Cow::from("q"), Cow::from("")));