";
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 = "
";
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
list 1
list 2
list 3
sublist 1
some other sublist A
some other sublist B
sublist 2
sublist 3
"#;
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:
this one
that one
the other one
"#;
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#"
"#;
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#"