use serde_wasm_bindgen instead
This commit is contained in:
parent
97192d31be
commit
dfa49c1c01
1 changed files with 17 additions and 6 deletions
23
src/lib.rs
23
src/lib.rs
|
|
@ -3,6 +3,7 @@ extern crate argus;
|
||||||
extern crate serde_json;
|
extern crate serde_json;
|
||||||
extern crate js_sys;
|
extern crate js_sys;
|
||||||
extern crate serde;
|
extern crate serde;
|
||||||
|
extern crate serde_wasm_bindgen;
|
||||||
|
|
||||||
use wasm_bindgen::prelude::*;
|
use wasm_bindgen::prelude::*;
|
||||||
|
|
||||||
|
|
@ -12,6 +13,7 @@ use argus::signals::interpolation;
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::vec;
|
use std::vec;
|
||||||
use serde::{Serialize, Deserialize};
|
use serde::{Serialize, Deserialize};
|
||||||
|
use serde_wasm_bindgen::{from_value, to_value};
|
||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
|
|
||||||
// #[wasm_bindgen]
|
// #[wasm_bindgen]
|
||||||
|
|
@ -76,21 +78,30 @@ impl<'a> Trace for TraceMap<'a> {
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
|
|
||||||
#[wasm_bindgen(getter_with_clone)]
|
#[derive(Serialize, Deserialize)]
|
||||||
pub struct StateBuddyTraceEntry {
|
pub struct StateBuddyTraceEntry {
|
||||||
simtime: f64,
|
simtime: f64,
|
||||||
inputEvent: String,
|
inputEvent: String,
|
||||||
outputEvents: Vec<String>,
|
outputEvents: Vec<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[wasm_bindgen]
|
#[derive(Serialize, Deserialize)]
|
||||||
pub struct StateBuddyTrace {
|
pub struct StateBuddyTrace {
|
||||||
entries: Vec<StateBuddyTraceEntry>,
|
entries: Vec<StateBuddyTraceEntry>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// #[wasm_bindgen]
|
||||||
|
// impl StateBuddyTrace {
|
||||||
|
// #[wasm_bindgen(constructor)]
|
||||||
|
// pub fn new(entries: &Vec<StateBuddyTraceEntry>) {
|
||||||
|
// StateBuddyTrace{entries}
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
#[wasm_bindgen]
|
#[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();
|
let mut traceMap = HashMap::<&str, Signal<bool>>::new();
|
||||||
for entry in &trace.entries {
|
for entry in &trace.entries {
|
||||||
let value = traceMap.entry(entry.inputEvent.as_str()).or_insert_with(|| Signal::<bool>::Sampled {
|
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,
|
satisfied: *satisfied,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
StateBuddyEvalResult { entries: result }
|
to_value(&StateBuddyEvalResult { entries: result }).expect("fuuuck")
|
||||||
}
|
}
|
||||||
|
|
||||||
#[wasm_bindgen]
|
#[derive(Serialize, Deserialize)]
|
||||||
pub struct StateBuddyEvalResultEntry {
|
pub struct StateBuddyEvalResultEntry {
|
||||||
timestamp: f64,
|
timestamp: f64,
|
||||||
satisfied: bool,
|
satisfied: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[wasm_bindgen]
|
#[derive(Serialize, Deserialize)]
|
||||||
pub struct StateBuddyEvalResult {
|
pub struct StateBuddyEvalResult {
|
||||||
entries: Vec<StateBuddyEvalResultEntry>,
|
entries: Vec<StateBuddyEvalResultEntry>,
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue