2023-12-25 17:03:59 +00:00
|
|
|
// #![no_main]
|
2023-12-24 06:35:21 +00:00
|
|
|
|
|
|
|
use organic::parser::parse_with_settings;
|
|
|
|
use organic::settings::GlobalSettings;
|
|
|
|
use wasm::ParseResult;
|
2023-12-24 20:48:33 +00:00
|
|
|
use wasm::ToWasm;
|
|
|
|
use wasm::ToWasmContext;
|
2023-12-24 05:59:41 +00:00
|
|
|
use wasm_bindgen::prelude::wasm_bindgen;
|
2023-12-24 05:39:57 +00:00
|
|
|
|
2023-12-24 20:48:33 +00:00
|
|
|
mod error;
|
2023-12-24 06:35:21 +00:00
|
|
|
mod wasm;
|
|
|
|
|
2023-12-24 05:59:41 +00:00
|
|
|
#[wasm_bindgen]
|
2023-12-24 06:35:21 +00:00
|
|
|
pub fn parse_org(org_contents: &str) -> wasm_bindgen::JsValue {
|
2023-12-25 17:03:59 +00:00
|
|
|
let rust_parsed = impl_parse_org(org_contents);
|
|
|
|
serde_wasm_bindgen::to_value(&rust_parsed).unwrap()
|
|
|
|
}
|
|
|
|
|
|
|
|
fn impl_parse_org(org_contents: &str) -> ParseResult<'_> {
|
2023-12-24 06:35:21 +00:00
|
|
|
let global_settings = GlobalSettings::default();
|
2023-12-24 20:48:33 +00:00
|
|
|
let to_wasm_context = ToWasmContext::new(org_contents);
|
|
|
|
let rust_parsed = match parse_with_settings(org_contents, &global_settings)
|
|
|
|
.map(|document| document.to_wasm(to_wasm_context))
|
|
|
|
.map(|wasm_document| match wasm_document {
|
|
|
|
Ok(wasm_document) => ParseResult::Success(wasm_document),
|
|
|
|
Err(err) => ParseResult::Error(format!("{:?}", err)),
|
|
|
|
}) {
|
|
|
|
Ok(wasm_document) => wasm_document,
|
|
|
|
Err(err) => ParseResult::Error(format!("{:?}", err)),
|
|
|
|
};
|
2023-12-25 17:03:59 +00:00
|
|
|
rust_parsed
|
|
|
|
}
|
|
|
|
|
|
|
|
fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|
|
|
let body = include_str!("/tmp/test.org");
|
|
|
|
let result = impl_parse_org(body);
|
|
|
|
|
|
|
|
println!("{}", serde_json::to_string(&result)?);
|
|
|
|
Ok(())
|
2023-12-24 05:39:57 +00:00
|
|
|
}
|