use serde_wasm_bindgen instead

This commit is contained in:
Joeri Exelmans 2025-11-04 10:20:51 +01:00
parent 97192d31be
commit dfa49c1c01

View file

@ -3,6 +3,7 @@ extern crate argus;
extern crate serde_json;
extern crate js_sys;
extern crate serde;
extern crate serde_wasm_bindgen;
use wasm_bindgen::prelude::*;
@ -12,6 +13,7 @@ use argus::signals::interpolation;
use std::collections::HashMap;
use std::vec;
use serde::{Serialize, Deserialize};
use serde_wasm_bindgen::{from_value, to_value};
use std::time::Duration;
// #[wasm_bindgen]
@ -76,21 +78,30 @@ impl<'a> Trace for TraceMap<'a> {
// }
// }
#[wasm_bindgen(getter_with_clone)]
#[derive(Serialize, Deserialize)]
pub struct StateBuddyTraceEntry {
simtime: f64,
inputEvent: String,
outputEvents: Vec<String>,
}
#[wasm_bindgen]
#[derive(Serialize, Deserialize)]
pub struct StateBuddyTrace {
entries: Vec<StateBuddyTraceEntry>,
}
// #[wasm_bindgen]
// impl StateBuddyTrace {
// #[wasm_bindgen(constructor)]
// pub fn new(entries: &Vec<StateBuddyTraceEntry>) {
// StateBuddyTrace{entries}
// }
// }
#[wasm_bindgen]
pub fn eval_boolean(s: &str, trace: &StateBuddyTrace) -> StateBuddyEvalResult {
pub fn eval_boolean(s: &str, js_trace: JsValue) -> JsValue {
let trace: StateBuddyTrace = from_value(js_trace).expect("fuuuuck");
let mut traceMap = HashMap::<&str, Signal<bool>>::new();
for entry in &trace.entries {
let value = traceMap.entry(entry.inputEvent.as_str()).or_insert_with(|| Signal::<bool>::Sampled {
@ -119,16 +130,16 @@ pub fn eval_boolean(s: &str, trace: &StateBuddyTrace) -> StateBuddyEvalResult {
satisfied: *satisfied,
});
});
StateBuddyEvalResult { entries: result }
to_value(&StateBuddyEvalResult { entries: result }).expect("fuuuck")
}
#[wasm_bindgen]
#[derive(Serialize, Deserialize)]
pub struct StateBuddyEvalResultEntry {
timestamp: f64,
satisfied: bool,
}
#[wasm_bindgen]
#[derive(Serialize, Deserialize)]
pub struct StateBuddyEvalResult {
entries: Vec<StateBuddyEvalResultEntry>,
}