bebop_lang/markdown/
mod.rs1pub 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}