organic/src/wasm/paragraph.rs
2023-12-27 19:53:07 -05:00

47 lines
1.1 KiB
Rust

use serde::Serialize;
use super::macros::to_wasm;
use super::standard_properties::WasmStandardProperties;
use super::to_wasm::ToWasm;
use crate::types::Paragraph;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "paragraph")]
pub struct WasmParagraph<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
}
to_wasm!(
WasmParagraph<'s, 'p>,
Paragraph<'s>,
original,
wasm_context,
standard_properties,
{
let children = original
.children
.iter()
.map(|child| {
child
.to_wasm(wasm_context.clone())
.map(Into::<WasmAstNode<'_, '_>>::into)
})
.collect::<Result<Vec<_>, _>>()?;
Ok(WasmParagraph {
standard_properties,
children,
})
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmParagraph<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::Paragraph(self)
}
}