Populating document's children.

This commit is contained in:
Tom Alexander 2023-12-25 12:55:48 -05:00
parent 995b41e697
commit 67e5829fd9
Signed by: talexander
GPG Key ID: D3A179C9A53C0EDE
5 changed files with 40 additions and 8 deletions

View File

@ -60,10 +60,11 @@ use super::verbatim::WasmVerbatim;
use super::verse_block::WasmVerseBlock;
#[derive(Debug, Serialize)]
#[serde(untagged)]
pub enum WasmAstNode<'s> {
// Document Nodes
Document(WasmDocument<'s>),
Heading(WasmHeadline<'s>),
Headline(WasmHeadline<'s>),
Section(WasmSection<'s>),
// Elements
Paragraph(WasmParagraph<'s>),

View File

@ -33,16 +33,34 @@ to_wasm!(
})
.collect();
let children = original
.zeroth_section
.iter()
.map(|child| {
child
.to_wasm(wasm_context.clone())
.map(Into::<WasmAstNode<'_>>::into)
})
.chain(original.children.iter().map(|child| {
child
.to_wasm(wasm_context.clone())
.map(Into::<WasmAstNode<'_>>::into)
}))
.collect::<Result<Vec<_>, _>>()?;
// let children = original
// .children
// .iter()
// .map(|child| child.to_wasm(wasm_context.clone()))
// .map(|child| {
// child
// .to_wasm(wasm_context.clone())
// .map(Into::<WasmAstNode<'_>>::into)
// })
// .collect::<Result<Vec<_>, _>>()?;
Ok(WasmDocument {
standard_properties,
additional_properties,
children: Vec::new(),
children,
})
}
);

View File

@ -1,9 +1,9 @@
use std::marker::PhantomData;
use organic::types::Heading;
use serde::Deserialize;
use serde::Serialize;
use super::ast_node::WasmAstNode;
use super::macros::to_wasm;
use super::standard_properties::WasmStandardProperties;
use super::to_wasm::ToWasm;
@ -11,7 +11,7 @@ use crate::wasm::to_wasm::ToWasmStandardProperties;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
#[serde(rename = "headline")]
pub(crate) struct WasmHeadline<'s> {
standard_properties: WasmStandardProperties,
children: Vec<()>,
@ -32,3 +32,9 @@ to_wasm!(
})
}
);
impl<'s> Into<WasmAstNode<'s>> for WasmHeadline<'s> {
fn into(self) -> WasmAstNode<'s> {
WasmAstNode::Headline(self)
}
}

View File

@ -11,7 +11,8 @@ macro_rules! to_wasm {
$wasm_context: crate::wasm::to_wasm::ToWasmContext<'_>,
) -> Result<Self::Output, crate::error::CustomError> {
let $original = self;
let $standard_properties = self.to_wasm_standard_properties($wasm_context)?;
let $standard_properties =
self.to_wasm_standard_properties($wasm_context.clone())?;
$fnbody
}
}

View File

@ -1,9 +1,9 @@
use std::marker::PhantomData;
use organic::types::Section;
use serde::Deserialize;
use serde::Serialize;
use super::ast_node::WasmAstNode;
use super::macros::to_wasm;
use super::standard_properties::WasmStandardProperties;
use super::to_wasm::ToWasm;
@ -11,7 +11,7 @@ use crate::wasm::to_wasm::ToWasmStandardProperties;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
#[serde(rename = "section")]
pub(crate) struct WasmSection<'s> {
standard_properties: WasmStandardProperties,
children: Vec<()>,
@ -32,3 +32,9 @@ to_wasm!(
})
}
);
impl<'s> Into<WasmAstNode<'s>> for WasmSection<'s> {
fn into(self) -> WasmAstNode<'s> {
WasmAstNode::Section(self)
}
}