Start defining the return type.
This commit is contained in:
@@ -1,7 +1,17 @@
|
||||
#![no_main]
|
||||
|
||||
use organic::parser::parse_with_settings;
|
||||
use organic::settings::GlobalSettings;
|
||||
use wasm::ParseResult;
|
||||
use wasm_bindgen::prelude::wasm_bindgen;
|
||||
|
||||
mod wasm;
|
||||
|
||||
#[wasm_bindgen]
|
||||
pub fn add(left: usize, right: usize) -> usize {
|
||||
left + right
|
||||
pub fn parse_org(org_contents: &str) -> wasm_bindgen::JsValue {
|
||||
let global_settings = GlobalSettings::default();
|
||||
let rust_parsed = parse_with_settings(org_contents, &global_settings)
|
||||
.map(|document| ParseResult::Success(document.into()))
|
||||
.unwrap_or_else(|err| ParseResult::Error(format!("{:?}", err)));
|
||||
serde_wasm_bindgen::to_value(&rust_parsed).unwrap()
|
||||
}
|
||||
|
||||
14
src/wasm/document.rs
Normal file
14
src/wasm/document.rs
Normal file
@@ -0,0 +1,14 @@
|
||||
use organic::types::Document;
|
||||
use serde::Deserialize;
|
||||
use serde::Serialize;
|
||||
|
||||
#[derive(Serialize, Deserialize)]
|
||||
#[serde(tag = "ast_node")]
|
||||
#[serde(rename = "org-data")]
|
||||
pub(crate) struct WasmDocument {}
|
||||
|
||||
impl From<Document<'_>> for WasmDocument {
|
||||
fn from(value: Document) -> Self {
|
||||
todo!()
|
||||
}
|
||||
}
|
||||
4
src/wasm/mod.rs
Normal file
4
src/wasm/mod.rs
Normal file
@@ -0,0 +1,4 @@
|
||||
mod document;
|
||||
mod parse_result;
|
||||
|
||||
pub(crate) use parse_result::ParseResult;
|
||||
14
src/wasm/parse_result.rs
Normal file
14
src/wasm/parse_result.rs
Normal file
@@ -0,0 +1,14 @@
|
||||
use serde::Deserialize;
|
||||
use serde::Serialize;
|
||||
|
||||
use super::document::WasmDocument;
|
||||
|
||||
#[derive(Serialize, Deserialize)]
|
||||
#[serde(tag = "status", content = "content")]
|
||||
pub(crate) enum ParseResult {
|
||||
#[serde(rename = "success")]
|
||||
Success(WasmDocument),
|
||||
|
||||
#[serde(rename = "error")]
|
||||
Error(String),
|
||||
}
|
||||
Reference in New Issue
Block a user