1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
#![feature(iter_zip)]
mod block;
mod parse;
mod parse_heirarchical;
mod table;
mod text;
pub use block::Block;
pub use parse::parse;
pub use parse_heirarchical::parse_heirarchical;
pub use table::{Alignment, Column, Table};
pub use text::{Hyperlink, Text};
pub type Line = Vec<Text>;
pub fn line_to_string(line: &[Text]) -> String {
let mut output = String::new();
for text in line {
match text {
Text::Normal(content) => output.push_str(&content),
Text::Bold(content) => output.push_str(&format!("**{}**", content)),
Text::Italic(content) => output.push_str(&format!("_{}_", content)),
Text::BoldItalic(content) => output.push_str(&format!("**_{}_**", content)),
Text::Code(content) => output.push_str(&format!("`{}`", content)),
Text::WikiLink(content) => output.push_str(&format!("[[{}]]", content)),
Text::Hyperlink(Hyperlink { label, target }) => {
output.push_str(&format!("[{}]({})", label, target))
}
}
}
return output;
}
|