use smart_markdown::{StreamRenderer, ThemeMode};
use std::io::{self, Write};
use std::thread;
use std::time::Duration;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut sr = StreamRenderer::new(80, ThemeMode::Dark);
println!(
"Streaming Markdown Demo with Table Updates\n----------------------------------------\n"
);
for line in sr.push("# Live Data Dashboard\n\n") {
println!("{line}");
}
io::stdout().flush()?;
thread::sleep(Duration::from_millis(200));
for line in sr.push("## System Metrics\n\n") {
println!("{line}");
}
io::stdout().flush()?;
thread::sleep(Duration::from_millis(200));
for line in sr.push("| Component | Status | Value | Trend |\n") {
println!("{line}");
}
io::stdout().flush()?;
thread::sleep(Duration::from_millis(200));
for line in sr.push("|-----------|--------|-------|-------|\n") {
println!("{line}");
}
io::stdout().flush()?;
thread::sleep(Duration::from_millis(200));
let lines = sr.push("| CPU Usage | Normal | 42% | → |\n");
for line in lines {
println!("{line}");
}
io::stdout().flush()?;
thread::sleep(Duration::from_millis(500));
let lines = sr.push("| Memory | Normal | 67% | ↗ |\n");
for line in lines {
println!("{line}");
}
io::stdout().flush()?;
thread::sleep(Duration::from_millis(500));
let lines = sr.push("| Disk I/O | High | 89% | ↗↗ |\n");
for line in lines {
println!("{line}");
}
io::stdout().flush()?;
thread::sleep(Duration::from_millis(500));
for line in sr.push("\n### Alerts\n\n") {
println!("{line}");
}
io::stdout().flush()?;
thread::sleep(Duration::from_millis(200));
for line in sr.push("- High disk I/O detected\n") {
println!("{line}");
}
io::stdout().flush()?;
thread::sleep(Duration::from_millis(200));
for line in sr.push("- Memory usage trending upward\n") {
println!("{line}");
}
io::stdout().flush()?;
thread::sleep(Duration::from_millis(200));
for line in sr.flush_remaining() {
println!("{line}");
}
println!();
Ok(())
}