editorjs_to_html_converter/
lib.rs1mod 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}