serde_wasm_bindgen was silently dropping many attributes (I suspect it is triggered by serde flatten) so this switches to serializing to JSON for passing values from wasm to js.
26 lines
922 B
Rust
26 lines
922 B
Rust
use gloo_utils::format::JsValueSerdeExt;
|
|
use wasm_bindgen::JsValue;
|
|
|
|
use crate::parser::parse_with_settings;
|
|
use crate::settings::GlobalSettings;
|
|
use crate::wasm::ParseResult;
|
|
use crate::wasm::ToWasm;
|
|
use crate::wasm::ToWasmContext;
|
|
|
|
pub fn parse_org(org_contents: &str) -> wasm_bindgen::JsValue {
|
|
let rust_parsed = match parse_with_settings(org_contents, &GlobalSettings::default()) {
|
|
Ok(document) => document,
|
|
Err(err) => {
|
|
return JsValue::from_serde(&ParseResult::Error(format!("{:?}", err))).unwrap();
|
|
}
|
|
};
|
|
let to_wasm_context = ToWasmContext::new(org_contents);
|
|
let wasm_document = match rust_parsed.to_wasm(to_wasm_context) {
|
|
Ok(document) => document,
|
|
Err(err) => {
|
|
return JsValue::from_serde(&ParseResult::Error(format!("{:?}", err))).unwrap();
|
|
}
|
|
};
|
|
JsValue::from_serde(&ParseResult::Success(wasm_document)).unwrap()
|
|
}
|