2024-01-27 16:13:17 -05:00
|
|
|
use gloo_utils::format::JsValueSerdeExt;
|
|
|
|
|
use wasm_bindgen::JsValue;
|
|
|
|
|
|
2024-01-03 23:38:04 -05:00
|
|
|
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) => {
|
2024-01-27 16:13:17 -05:00
|
|
|
return JsValue::from_serde(&ParseResult::Error(format!("{:?}", err))).unwrap();
|
2024-01-03 23:38:04 -05:00
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
let to_wasm_context = ToWasmContext::new(org_contents);
|
|
|
|
|
let wasm_document = match rust_parsed.to_wasm(to_wasm_context) {
|
|
|
|
|
Ok(document) => document,
|
|
|
|
|
Err(err) => {
|
2024-01-27 16:13:17 -05:00
|
|
|
return JsValue::from_serde(&ParseResult::Error(format!("{:?}", err))).unwrap();
|
2024-01-03 23:38:04 -05:00
|
|
|
}
|
|
|
|
|
};
|
2024-01-27 16:13:17 -05:00
|
|
|
JsValue::from_serde(&ParseResult::Success(wasm_document)).unwrap()
|
2024-01-03 23:38:04 -05:00
|
|
|
}
|