use sauron_markdown::sauron::prelude::*; use sauron_markdown::*; #[test] fn test_inline_htmls() { let md = r#"
This is div content1
"#; let view: Node<()> = markdown(md); let mut buffer = String::new(); view.render(&mut buffer).unwrap(); println!("view: {}", buffer); assert_eq!(md, buffer); } #[test] fn source_code() { let md = r#" ```rust fn main(){ println!("Hello world!"); } ``` "#; let expected = "
\n        fn main(){\n        println!(\"Hello world!\");\n    }\n\n
"; let view: Node<()> = markdown(md); let mut buffer = String::new(); view.render(&mut buffer).unwrap(); println!("view: {}", buffer); assert_eq!(expected, buffer); } #[test] fn code() { let md = r#" This is has some `code` and other.. "#; let expected = "

\n This is has some \n code\n and other..\n

"; let view: Node<()> = markdown(md); let mut buffer = String::new(); view.render(&mut buffer).unwrap(); println!("view: {}", buffer); assert_eq!(expected, buffer); } #[test] fn footnotes() { let md = r#" ### [Footnotes](https://github.com/markdown-it/markdown-it-footnote) Footnote 1 link[^first]. Footnote 2 link[^second]. Inline footnote^[Text of inline footnote] definition. Duplicated footnote reference[^second]. [^first]: Footnote **can have markup** and multiple paragraphs. [^second]: Footnote text. "#; let expected = "

Footnotes

Footnote 1 link1.

Footnote 2 link2.

Inline footnote^[Text of inline footnote] definition.

Duplicated footnote reference2.

and multiple paragraphs.\n

"; let view: Node<()> = markdown(md); assert_eq!(expected, view.render_to_string()); } #[test] fn test_md_with_html() { let md = r#" [Hello](link.html) "#; let expected = "

\n

\n Hello\n \n\n

\n \n

"; let view: Node<()> = markdown(md); let mut buffer = String::new(); view.render(&mut buffer).unwrap(); println!("view: {}", buffer); assert_eq!(expected, buffer); } #[test] fn test_md_with_image() { let md = r#" [Hello](link.html) ![](img.jpeg "Image title")"#; let expected = "

\n Hello\n \n\n \n

"; let view: Node<()> = markdown(md); let mut buffer = String::new(); view.render(&mut buffer).unwrap(); println!("view: {}", buffer); assert_eq!(expected, buffer); } #[test] fn test_list() { let md = r#" # List - list 1 - list 2 - list 3 - sublist 1 - some other sublist A - some other sublist B - sublist 2 - sublist 3 "#; let expected = r#"

List

"#; let view: Node<()> = markdown(md); let mut buffer = String::new(); view.render_compressed(&mut buffer).unwrap(); println!("view: {}", buffer); assert_eq!(expected, buffer); } #[test] fn test_md() { let md = r#" An h1 header ============ look like: * this one * that one * the other one"#; let view: Node<()> = markdown(md); let expected = r#"

An h1 header

look like:

"#; let mut buffer = String::new(); view.render(&mut buffer).unwrap(); println!("view: {}", buffer); assert_eq!(expected, buffer); } #[test] fn test_md_links() { let md = r#" [link text](http://dev.nodeca.com) [link with title](http://nodeca.github.io/pica/demo/ "title text!")"#; let view: Node<()> = markdown(md); let expected = r#"

link text

link with title

"#; let mut buffer = String::new(); view.render(&mut buffer).unwrap(); println!("view: {}", buffer); assert_eq!(expected, buffer); } #[test] fn test_md_tables() { let md = r#" ## Tables | Option | Description | |:------ | -----------:| | data | path to data files to supply the data that will be passed into templates. | | engine | engine to be used for processing templates. Handlebars is the default. | | ext | extension to be used for dest files. | } "#; let view: Node<()> = markdown(md); let expected = r#"

Tables

Option Description
data path to data files to supply the data that will be passed into templates.
engine engine to be used for processing templates. Handlebars is the default.
ext extension to be used for dest files.
}

"#; let mut buffer = String::new(); view.render(&mut buffer).unwrap(); println!("view: {}", buffer); assert_eq!(expected, buffer); } #[test] fn test_md_with_svgbob_processor() { let md = r#" This is Markdown with some funky __examples__. ```bob .------. +-------+ | bob | *---> | alice | `------' +-------+ ``` "#; let node: Node<()> = markdown_with_plugins( md, Plugins { code_fence_processor: Some(Box::new(|code_fence, code| { if let Some(code_fence) = code_fence { match code_fence { "bob" => { println!("processing svgbob..."); let svg = svgbob::to_svg_string_compressed(code); Some(safe_html(svg)) } _ => { println!("unrecognized code fence: {}", code_fence); None } } } else { println!("no code fence"); None } })), ..Default::default() }, ); let html = node.render_to_string(); println!("html: {}", html); dbg!(&html); let expected = r#"

This is Markdown with some funky __examples__.
bobalice

"#; assert_eq!(expected, html); }