bebop_lang/markdown/
mod.rs

1pub mod html;
2pub mod lisp;
3pub mod parser;
4
5#[derive(Debug, PartialEq)]
6pub enum Markdown {
7    Heading(usize, MarkdownText),
8    OrderedList(Vec<MarkdownText>),
9    UnorderedList(Vec<MarkdownText>),
10    TaskList(Vec<(bool, MarkdownText)>),
11    Line(MarkdownText),
12    Codeblock(String, String),
13    Blockquote(MarkdownText),
14    HorizontalRule,
15    Lisp(String),
16}
17
18pub type MarkdownText = Vec<MarkdownInline>;
19
20#[derive(Debug, PartialEq)]
21pub enum MarkdownInline {
22    Link(String, String),
23    ExternalLink(String, String),
24    Image(String, String),
25    InlineCode(String),
26    Bold(String),
27    Italic(String),
28    Plaintext(String),
29    Strikethrough(String),
30    Color(String),
31}
32
33pub fn markdown_to_html(md: &str) -> Result<String, String> {
34    let (_, md) = parser::parse_markdown(md).map_err(|e| {
35        println!("{:?}", e);
36        String::from("Not valid md")
37    })?;
38
39    Ok(md.into_iter().map(html::markdown_to_html).collect())
40}
41
42pub fn markdown_to_lisp(md: &str) -> Result<String, String> {
43    let (_, md) = parser::parse_markdown(md).map_err(|e| {
44        println!("{:?}", e);
45        String::from("Not valid md")
46    })?;
47
48    Ok(md.into_iter().map(lisp::markdown_to_lisp).collect())
49}