Skip to main content

render/
render.rs

1use sevenmark_html::{RenderConfig, render_document};
2use sevenmark_parser::core::parse_document;
3use std::fs;
4use std::time::Instant;
5
6fn main() {
7    let input_content = fs::read_to_string("ToParse.txt").expect("ToParse.txt file not found");
8    let document_len = input_content.len();
9
10    println!("Input ({} bytes):\n{}\n", document_len, "=".repeat(50));
11
12    // Parse
13    let parse_start = Instant::now();
14    let ast = parse_document(&input_content);
15    let parse_duration = parse_start.elapsed();
16    println!("Parsed {} elements in {:?}", ast.len(), parse_duration);
17
18    // Render
19    let render_start = Instant::now();
20    let config = RenderConfig {
21        edit_url: Some("/edit/TestDocument"),
22        file_base_url: Some("https://cdn.example.com/"),
23        document_base_url: Some("/Document/"),
24        category_base_url: Some("/Category/"),
25    };
26    let html = render_document(&ast, &config);
27    let render_duration = render_start.elapsed();
28    println!("Rendered {} bytes in {:?}", html.len(), render_duration);
29
30    // Save
31    fs::write("RenderResult.html", &html).ok();
32    println!("\nResult saved to RenderResult.html");
33
34    // Performance
35    let total_duration = parse_duration + render_duration;
36    println!(
37        "Total: {:?} ({:.2} KB/s)",
38        total_duration,
39        document_len as f64 / 1024.0 / total_duration.as_secs_f64()
40    );
41}