summaryrefslogtreecommitdiff
path: root/src/lib.rs
blob: c0b8c84c92ca8c119f4b84a909863c95e6bd0eb3 (plain) (blame)
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;
}