editorjs_to_html_converter/
lib.rs

1mod models;
2mod blocks;
3
4use crate::models::content::{Content};
5use crate::models::data::{Data};
6
7pub fn convert_to_html(output: &String) -> String {
8    let deserialize_result: Content = serde_json::from_str(&output)
9        .expect("deserialize error");
10    let blocks = deserialize_result.blocks;
11    let mut html = String::new();
12    for block in blocks {
13        let data = block.data;
14        match data {
15            Data::Header(header) => {
16                let header_html = format!("<h{l}>{t}</h{l}>",
17                                          l = header.level,
18                                          t = header.text
19                );
20                html.push_str(header_html.as_str());
21            }
22            Data::Paragraph(paragraph) => {
23                let paragraph_html = format!("<p>{}</p>", paragraph.text);
24                html.push_str(paragraph_html.as_str());
25            }
26            Data::List(list) => {
27                let style = format!(" data-style=\"{s}\"", s = list.style);
28                let mut items_html = String::new();
29                for item in list.items {
30                    let item_html = format!("<li>{t}</li>", t = item);
31                    items_html.push_str(item_html.as_str())
32                }
33                let list_html = format!("<ul{s}>{i}</ul>",
34                                        s = style,
35                                        i = items_html
36                );
37                html.push_str(list_html.as_str());
38            }
39            _ => {}
40        }
41    }
42    html
43}