Skip to main content

dada_debug/
view.rs

1use dada_ir_ast::{DebugEvent, DebugEventPayload};
2use handlebars::handlebars_helper;
3use rust_embed::Embed;
4
5use crate::server::State;
6
7pub async fn try_view(event_index: usize, state: &State) -> anyhow::Result<String> {
8    let Some(event_data) = state.debug_events.lock().unwrap().get(event_index).cloned() else {
9        anyhow::bail!("Event not found");
10    };
11
12    let DebugEvent { payload, .. } = &*event_data;
13    match payload {
14        DebugEventPayload::CheckLog(log) => Ok(crate::hbs::render("log", &log)?),
15        DebugEventPayload::Diagnostic(_) => {
16            anyhow::bail!("not implemented: view diagnostics")
17        }
18    }
19}
20
21pub async fn try_view_data(event_index: usize, state: &State) -> anyhow::Result<serde_json::Value> {
22    let Some(event_data) = state.debug_events.lock().unwrap().get(event_index).cloned() else {
23        anyhow::bail!("Event not found");
24    };
25
26    let DebugEvent { payload, .. } = &*event_data;
27    match payload {
28        DebugEventPayload::CheckLog(log) => Ok(log.clone()),
29        DebugEventPayload::Diagnostic(_) => {
30            anyhow::bail!("not implemented: view diagnostics")
31        }
32    }
33}
34
35#[derive(Embed)]
36#[folder = "templates"]
37#[allow(dead_code)]
38struct Assets;
39
40handlebars_helper!(index: |events: array, i: usize| events[i].clone());