Compare commits

...

16 Commits

Author SHA1 Message Date
Tom Alexander
3fd3d20722
Merge branch 'test_wasm_json' into wasm
Some checks failed
clippy Build clippy has failed
rust-build Build rust-build has failed
rust-foreign-document-test Build rust-foreign-document-test has succeeded
rust-test Build rust-test has succeeded
2023-12-29 18:54:58 -05:00
Tom Alexander
90735586b5
Add special case for object trees. 2023-12-29 18:54:41 -05:00
Tom Alexander
78befc7665
Remove old code. 2023-12-29 17:31:14 -05:00
Tom Alexander
ef549d3b19
Compare quoted strings. 2023-12-29 17:29:13 -05:00
Tom Alexander
777c756a7f
Compare plain text AST nodes. 2023-12-29 17:24:38 -05:00
Tom Alexander
037caf369c
Standardize parameter order. 2023-12-29 16:56:02 -05:00
Tom Alexander
54085b5833
Implement compare optional pair. 2023-12-29 16:51:52 -05:00
Tom Alexander
2bfa8e59e7
Add code to compare children. 2023-12-29 16:06:07 -05:00
Tom Alexander
5d31db39a4
Remove some underscores from wasm schema to match elisp. 2023-12-29 15:41:41 -05:00
Tom Alexander
adcd0de7e4
Compare standard properties. 2023-12-29 15:38:18 -05:00
Tom Alexander
c2f9789a64
Placeholder for comparing quoted strings. 2023-12-29 15:09:54 -05:00
Tom Alexander
579cbb5d11
Switch everything over to the new to_wasm macro. 2023-12-29 15:03:36 -05:00
Tom Alexander
cad2be43bf
Implement a new to_wasm macro that uses the WasmAstNodeWrapper. 2023-12-29 14:06:10 -05:00
Tom Alexander
a0a4f0eb90
Remove lifetimes from wasm ast nodes. 2023-12-29 12:49:43 -05:00
Tom Alexander
9f4f8e79ce
Implement a wrapper type for AST nodes.
This is to make it impossible to have a collision for attribute names that are real attributes vs attributes I've added for structure (like children and ast_node).
2023-12-29 11:58:46 -05:00
Tom Alexander
77e0dbb42e
Start working on a version of compare based on json values.
This will be a better test because it will be testing that what we export to json is equivalent to the elisp AST generated from emacs. Because of these tests, we could also confidently use the wasm structure to elisp.
2023-12-29 11:37:30 -05:00
74 changed files with 2090 additions and 3491 deletions

View File

@ -16,8 +16,10 @@ pub(crate) use compare_field::EmacsField;
pub(crate) use elisp_fact::ElispFact;
pub use sexp::sexp;
pub(crate) use sexp::unquote;
pub(crate) use sexp::TextWithProperties;
pub use sexp::Token;
pub(crate) use util::get_emacs_standard_properties;
pub(crate) use util::get_property;
pub(crate) use util::get_property_quoted_string;
pub(crate) use util::maybe_token_to_usize;
pub(crate) use util::EmacsStandardProperties;

View File

@ -203,7 +203,7 @@ pub(crate) fn get_emacs_standard_properties(
})
}
fn maybe_token_to_usize(
pub(crate) fn maybe_token_to_usize(
token: Option<&Token<'_>>,
) -> Result<Option<usize>, Box<dyn std::error::Error>> {
Ok(token

View File

@ -3,6 +3,7 @@
#![feature(path_file_prefix)]
#![feature(is_sorted)]
#![feature(test)]
#![feature(iter_intersperse)]
// TODO: #![warn(missing_docs)]
#![allow(clippy::bool_assert_comparison)] // Sometimes you want the long form because its easier to see at a glance.

View File

@ -1,5 +1,7 @@
use std::borrow::Cow;
use std::collections::HashMap;
use serde::Deserialize;
use serde::Serialize;
use super::macros::to_wasm;
@ -8,32 +10,35 @@ use super::WasmAstNode;
use crate::types::AffiliatedKeywordValue;
use crate::types::AffiliatedKeywords;
#[derive(Debug, Serialize)]
#[derive(Debug, Serialize, Deserialize)]
#[serde(untagged)]
pub enum AdditionalPropertyValue<'s, 'p> {
SingleString(&'s str),
ListOfStrings(Vec<&'s str>),
pub enum AdditionalPropertyValue {
SingleString(String),
ListOfStrings(Vec<String>),
OptionalPair {
optval: Option<&'s str>,
val: &'s str,
optval: Option<String>,
val: String,
},
ObjectTree {
#[serde(rename = "object-tree")]
object_tree: Vec<(Option<Vec<WasmAstNode>>, Vec<WasmAstNode>)>,
},
ObjectTree(Vec<(Option<Vec<WasmAstNode<'s, 'p>>>, Vec<WasmAstNode<'s, 'p>>)>),
}
#[derive(Debug, Serialize, Default)]
pub struct AdditionalProperties<'s, 'p> {
#[derive(Debug, Serialize, Deserialize, Default)]
pub struct AdditionalProperties {
#[serde(flatten)]
pub(crate) properties: HashMap<String, AdditionalPropertyValue<'s, 'p>>,
pub(crate) properties: HashMap<String, AdditionalPropertyValue>,
}
impl<'s, 'p> AdditionalProperties<'s, 'p> {
impl AdditionalProperties {
pub(crate) fn get_elisp_names<'c>(&'c self) -> impl Iterator<Item = String> + 'c {
self.properties.keys().map(move |key| format!(":{}", key))
}
}
to_wasm!(
AdditionalProperties<'s, 'p>,
AdditionalProperties,
AffiliatedKeywords<'s>,
original,
wasm_context,
@ -42,15 +47,17 @@ to_wasm!(
for (name, val) in original.keywords.iter() {
let converted_val = match val {
AffiliatedKeywordValue::SingleString(val) => {
AdditionalPropertyValue::SingleString(val)
AdditionalPropertyValue::SingleString((*val).to_owned())
}
AffiliatedKeywordValue::ListOfStrings(val) => {
AdditionalPropertyValue::ListOfStrings(val.clone())
AdditionalPropertyValue::ListOfStrings(
val.iter().map(|s| (*s).to_owned()).collect(),
)
}
AffiliatedKeywordValue::OptionalPair { optval, val } => {
AdditionalPropertyValue::OptionalPair {
optval: optval.clone(),
val: val,
optval: optval.map(|s| (*s).to_owned()),
val: (*val).to_owned(),
}
}
AffiliatedKeywordValue::ObjectTree(val) => {
@ -64,7 +71,7 @@ to_wasm!(
.map(|child| {
child
.to_wasm(wasm_context.clone())
.map(Into::<WasmAstNode<'_, '_>>::into)
.map(Into::<WasmAstNode>::into)
})
.collect::<Result<Vec<_>, _>>()?,
)
@ -76,14 +83,14 @@ to_wasm!(
.map(|child| {
child
.to_wasm(wasm_context.clone())
.map(Into::<WasmAstNode<'_, '_>>::into)
.map(Into::<WasmAstNode>::into)
})
.collect::<Result<Vec<_>, _>>()?;
ret.push((converted_optval, converted_value));
}
AdditionalPropertyValue::ObjectTree(ret)
AdditionalPropertyValue::ObjectTree { object_tree: ret }
}
};
additional_properties

View File

@ -1,36 +1,33 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::AngleLink;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmAngleLink<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmAngleLink {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmAngleLink<'s, 'p>,
WasmAngleLink,
AngleLink<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::AngleLink(original) },
{ "TODO".into() },
{
Ok(WasmAngleLink {
standard_properties,
children: Vec::new(),
})
Ok((
Vec::new(),
WasmAngleLink {
additional_properties: AdditionalProperties::default(),
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmAngleLink<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::AngleLink(self)
}
}

View File

@ -1,3 +1,4 @@
use serde::Deserialize;
use serde::Serialize;
use super::angle_link::WasmAngleLink;
@ -58,71 +59,84 @@ use super::timestamp::WasmTimestamp;
use super::underline::WasmUnderline;
use super::verbatim::WasmVerbatim;
use super::verse_block::WasmVerseBlock;
use super::WasmStandardProperties;
#[derive(Debug, Serialize)]
#[serde(untagged)]
pub enum WasmAstNode<'s, 'p> {
// Document Nodes
Document(WasmDocument<'s, 'p>),
Headline(WasmHeadline<'s, 'p>),
Section(WasmSection<'s, 'p>),
// Elements
Paragraph(WasmParagraph<'s, 'p>),
PlainList(WasmPlainList<'s, 'p>),
PlainListItem(WasmPlainListItem<'s, 'p>),
CenterBlock(WasmCenterBlock<'s, 'p>),
QuoteBlock(WasmQuoteBlock<'s, 'p>),
SpecialBlock(WasmSpecialBlock<'s, 'p>),
DynamicBlock(WasmDynamicBlock<'s, 'p>),
FootnoteDefinition(WasmFootnoteDefinition<'s, 'p>),
Comment(WasmComment<'s, 'p>),
Drawer(WasmDrawer<'s, 'p>),
PropertyDrawer(WasmPropertyDrawer<'s, 'p>),
NodeProperty(WasmNodeProperty<'s, 'p>),
Table(WasmTable<'s, 'p>),
TableRow(WasmTableRow<'s, 'p>),
VerseBlock(WasmVerseBlock<'s, 'p>),
CommentBlock(WasmCommentBlock<'s, 'p>),
ExampleBlock(WasmExampleBlock<'s, 'p>),
ExportBlock(WasmExportBlock<'s, 'p>),
SrcBlock(WasmSrcBlock<'s, 'p>),
Clock(WasmClock<'s, 'p>),
DiarySexp(WasmDiarySexp<'s, 'p>),
Planning(WasmPlanning<'s, 'p>),
FixedWidthArea(WasmFixedWidthArea<'s, 'p>),
HorizontalRule(WasmHorizontalRule<'s, 'p>),
Keyword(WasmKeyword<'s, 'p>),
BabelCall(WasmBabelCall<'s, 'p>),
LatexEnvironment(WasmLatexEnvironment<'s, 'p>),
// Objects
Bold(WasmBold<'s, 'p>),
Italic(WasmItalic<'s, 'p>),
Underline(WasmUnderline<'s, 'p>),
StrikeThrough(WasmStrikeThrough<'s, 'p>),
Code(WasmCode<'s, 'p>),
Verbatim(WasmVerbatim<'s, 'p>),
PlainText(WasmPlainText<'s, 'p>),
RegularLink(WasmRegularLink<'s, 'p>),
RadioLink(WasmRadioLink<'s, 'p>),
RadioTarget(WasmRadioTarget<'s, 'p>),
PlainLink(WasmPlainLink<'s, 'p>),
AngleLink(WasmAngleLink<'s, 'p>),
OrgMacro(WasmOrgMacro<'s, 'p>),
Entity(WasmEntity<'s, 'p>),
LatexFragment(WasmLatexFragment<'s, 'p>),
ExportSnippet(WasmExportSnippet<'s, 'p>),
FootnoteReference(WasmFootnoteReference<'s, 'p>),
Citation(WasmCitation<'s, 'p>),
CitationReference(WasmCitationReference<'s, 'p>),
InlineBabelCall(WasmInlineBabelCall<'s, 'p>),
InlineSourceBlock(WasmInlineSourceBlock<'s, 'p>),
LineBreak(WasmLineBreak<'s, 'p>),
Target(WasmTarget<'s, 'p>),
StatisticsCookie(WasmStatisticsCookie<'s, 'p>),
Subscript(WasmSubscript<'s, 'p>),
Superscript(WasmSuperscript<'s, 'p>),
TableCell(WasmTableCell<'s, 'p>),
Timestamp(WasmTimestamp<'s, 'p>),
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmAstNodeWrapper<I> {
#[serde(rename = "ast-node")]
pub(crate) ast_node: String,
#[serde(rename = "standard-properties")]
pub(crate) standard_properties: WasmStandardProperties,
#[serde(rename = "children")]
pub(crate) children: Vec<WasmAstNode>,
#[serde(rename = "properties")]
pub(crate) properties: I,
}
impl<'s, 'p> WasmAstNode<'s, 'p> {}
#[derive(Debug, Serialize, Deserialize)]
#[serde(untagged)]
pub enum WasmAstNode {
// Document Nodes
Document(WasmAstNodeWrapper<WasmDocument>),
Headline(WasmAstNodeWrapper<WasmHeadline>),
Section(WasmAstNodeWrapper<WasmSection>),
// Elements
Paragraph(WasmAstNodeWrapper<WasmParagraph>),
PlainList(WasmAstNodeWrapper<WasmPlainList>),
PlainListItem(WasmAstNodeWrapper<WasmPlainListItem>),
CenterBlock(WasmAstNodeWrapper<WasmCenterBlock>),
QuoteBlock(WasmAstNodeWrapper<WasmQuoteBlock>),
SpecialBlock(WasmAstNodeWrapper<WasmSpecialBlock>),
DynamicBlock(WasmAstNodeWrapper<WasmDynamicBlock>),
FootnoteDefinition(WasmAstNodeWrapper<WasmFootnoteDefinition>),
Comment(WasmAstNodeWrapper<WasmComment>),
Drawer(WasmAstNodeWrapper<WasmDrawer>),
PropertyDrawer(WasmAstNodeWrapper<WasmPropertyDrawer>),
NodeProperty(WasmAstNodeWrapper<WasmNodeProperty>),
Table(WasmAstNodeWrapper<WasmTable>),
TableRow(WasmAstNodeWrapper<WasmTableRow>),
VerseBlock(WasmAstNodeWrapper<WasmVerseBlock>),
CommentBlock(WasmAstNodeWrapper<WasmCommentBlock>),
ExampleBlock(WasmAstNodeWrapper<WasmExampleBlock>),
ExportBlock(WasmAstNodeWrapper<WasmExportBlock>),
SrcBlock(WasmAstNodeWrapper<WasmSrcBlock>),
Clock(WasmAstNodeWrapper<WasmClock>),
DiarySexp(WasmAstNodeWrapper<WasmDiarySexp>),
Planning(WasmAstNodeWrapper<WasmPlanning>),
FixedWidthArea(WasmAstNodeWrapper<WasmFixedWidthArea>),
HorizontalRule(WasmAstNodeWrapper<WasmHorizontalRule>),
Keyword(WasmAstNodeWrapper<WasmKeyword>),
BabelCall(WasmAstNodeWrapper<WasmBabelCall>),
LatexEnvironment(WasmAstNodeWrapper<WasmLatexEnvironment>),
// Objects
Bold(WasmAstNodeWrapper<WasmBold>),
Italic(WasmAstNodeWrapper<WasmItalic>),
Underline(WasmAstNodeWrapper<WasmUnderline>),
StrikeThrough(WasmAstNodeWrapper<WasmStrikeThrough>),
Code(WasmAstNodeWrapper<WasmCode>),
Verbatim(WasmAstNodeWrapper<WasmVerbatim>),
PlainText(WasmAstNodeWrapper<WasmPlainText>),
RegularLink(WasmAstNodeWrapper<WasmRegularLink>),
RadioLink(WasmAstNodeWrapper<WasmRadioLink>),
RadioTarget(WasmAstNodeWrapper<WasmRadioTarget>),
PlainLink(WasmAstNodeWrapper<WasmPlainLink>),
AngleLink(WasmAstNodeWrapper<WasmAngleLink>),
OrgMacro(WasmAstNodeWrapper<WasmOrgMacro>),
Entity(WasmAstNodeWrapper<WasmEntity>),
LatexFragment(WasmAstNodeWrapper<WasmLatexFragment>),
ExportSnippet(WasmAstNodeWrapper<WasmExportSnippet>),
FootnoteReference(WasmAstNodeWrapper<WasmFootnoteReference>),
Citation(WasmAstNodeWrapper<WasmCitation>),
CitationReference(WasmAstNodeWrapper<WasmCitationReference>),
InlineBabelCall(WasmAstNodeWrapper<WasmInlineBabelCall>),
InlineSourceBlock(WasmAstNodeWrapper<WasmInlineSourceBlock>),
LineBreak(WasmAstNodeWrapper<WasmLineBreak>),
Target(WasmAstNodeWrapper<WasmTarget>),
StatisticsCookie(WasmAstNodeWrapper<WasmStatisticsCookie>),
Subscript(WasmAstNodeWrapper<WasmSubscript>),
Superscript(WasmAstNodeWrapper<WasmSuperscript>),
TableCell(WasmAstNodeWrapper<WasmTableCell>),
Timestamp(WasmAstNodeWrapper<WasmTimestamp>),
}
impl WasmAstNode {}

View File

@ -1,36 +1,33 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::BabelCall;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmBabelCall<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmBabelCall {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmBabelCall<'s, 'p>,
WasmBabelCall,
BabelCall<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::BabelCall(original) },
{ "TODO".into() },
{
Ok(WasmBabelCall {
standard_properties,
children: Vec::new(),
})
Ok((
Vec::new(),
WasmBabelCall {
additional_properties: AdditionalProperties::default(),
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmBabelCall<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::BabelCall(self)
}
}

View File

@ -1,36 +1,43 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::Bold;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmBold<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmBold {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmBold<'s, 'p>,
WasmBold,
Bold<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::Bold(original) },
{ "TODO".into() },
{
Ok(WasmBold {
standard_properties,
children: Vec::new(),
})
let children = original
.children
.iter()
.map(|child| {
child
.to_wasm(wasm_context.clone())
.map(Into::<WasmAstNode>::into)
})
.collect::<Result<Vec<_>, _>>()?;
Ok((
children,
WasmBold {
additional_properties: AdditionalProperties::default(),
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmBold<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::Bold(self)
}
}

View File

@ -1,36 +1,43 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::CenterBlock;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmCenterBlock<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmCenterBlock {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmCenterBlock<'s, 'p>,
WasmCenterBlock,
CenterBlock<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::CenterBlock(original) },
{ "TODO".into() },
{
Ok(WasmCenterBlock {
standard_properties,
children: Vec::new(),
})
let children = original
.children
.iter()
.map(|child| {
child
.to_wasm(wasm_context.clone())
.map(Into::<WasmAstNode>::into)
})
.collect::<Result<Vec<_>, _>>()?;
Ok((
children,
WasmCenterBlock {
additional_properties: AdditionalProperties::default(),
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmCenterBlock<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::CenterBlock(self)
}
}

View File

@ -1,36 +1,43 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::Citation;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmCitation<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmCitation {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmCitation<'s, 'p>,
WasmCitation,
Citation<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::Citation(original) },
{ "TODO".into() },
{
Ok(WasmCitation {
standard_properties,
children: Vec::new(),
})
let children = original
.children
.iter()
.map(|child| {
child
.to_wasm(wasm_context.clone())
.map(Into::<WasmAstNode>::into)
})
.collect::<Result<Vec<_>, _>>()?;
Ok((
children,
WasmCitation {
additional_properties: AdditionalProperties::default(),
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmCitation<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::Citation(self)
}
}

View File

@ -1,36 +1,33 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::CitationReference;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmCitationReference<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmCitationReference {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmCitationReference<'s, 'p>,
WasmCitationReference,
CitationReference<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::CitationReference(original) },
{ "TODO".into() },
{
Ok(WasmCitationReference {
standard_properties,
children: Vec::new(),
})
Ok((
Vec::new(),
WasmCitationReference {
additional_properties: AdditionalProperties::default(),
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmCitationReference<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::CitationReference(self)
}
}

View File

@ -1,36 +1,33 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::Clock;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmClock<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmClock {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmClock<'s, 'p>,
WasmClock,
Clock<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::Clock(original) },
{ "TODO".into() },
{
Ok(WasmClock {
standard_properties,
children: Vec::new(),
})
Ok((
Vec::new(),
WasmClock {
additional_properties: AdditionalProperties::default(),
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmClock<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::Clock(self)
}
}

View File

@ -1,36 +1,33 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::Code;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmCode<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmCode {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmCode<'s, 'p>,
WasmCode,
Code<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::Code(original) },
{ "TODO".into() },
{
Ok(WasmCode {
standard_properties,
children: Vec::new(),
})
Ok((
Vec::new(),
WasmCode {
additional_properties: AdditionalProperties::default(),
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmCode<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::Code(self)
}
}

View File

@ -1,36 +1,33 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::Comment;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmComment<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmComment {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmComment<'s, 'p>,
WasmComment,
Comment<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::Comment(original) },
{ "TODO".into() },
{
Ok(WasmComment {
standard_properties,
children: Vec::new(),
})
Ok((
Vec::new(),
WasmComment {
additional_properties: AdditionalProperties::default(),
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmComment<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::Comment(self)
}
}

View File

@ -1,36 +1,33 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::CommentBlock;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmCommentBlock<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmCommentBlock {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmCommentBlock<'s, 'p>,
WasmCommentBlock,
CommentBlock<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::CommentBlock(original) },
{ "TODO".into() },
{
Ok(WasmCommentBlock {
standard_properties,
children: Vec::new(),
})
Ok((
Vec::new(),
WasmCommentBlock {
additional_properties: AdditionalProperties::default(),
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmCommentBlock<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::CommentBlock(self)
}
}

View File

@ -1,36 +1,33 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::DiarySexp;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmDiarySexp<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmDiarySexp {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmDiarySexp<'s, 'p>,
WasmDiarySexp,
DiarySexp<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::DiarySexp(original) },
{ "TODO".into() },
{
Ok(WasmDiarySexp {
standard_properties,
children: Vec::new(),
})
Ok((
Vec::new(),
WasmDiarySexp {
additional_properties: AdditionalProperties::default(),
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmDiarySexp<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::DiarySexp(self)
}
}

View File

@ -1,36 +1,33 @@
use std::path::PathBuf;
use serde::Deserialize;
use serde::Serialize;
use super::additional_property::AdditionalProperties;
use super::additional_property::AdditionalPropertyValue;
use super::ast_node::WasmAstNode;
use super::macros::to_wasm;
use super::standard_properties::WasmStandardProperties;
use super::to_wasm::ToWasm;
#[cfg(feature = "wasm_test")]
use crate::compare::ElispFact;
use crate::types::Document;
use crate::wasm::to_wasm::ToWasmStandardProperties;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmDocument<'s, 'p> {
pub(crate) standard_properties: WasmStandardProperties,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmDocument {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties<'s, 'p>,
pub(crate) children: Vec<WasmAstNode<'s, 'p>>,
pub(crate) category: Option<&'p str>,
pub(crate) additional_properties: AdditionalProperties,
#[serde(rename = "CATEGORY")]
pub(crate) category: Option<String>,
pub(crate) path: Option<PathBuf>,
}
to_wasm!(
WasmDocument<'s, 'p>,
WasmDocument,
Document<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::Document(original) },
{ "org-data".into() },
{
let category = original.category.as_ref().map(String::as_str);
let path = original.path.clone();
@ -39,7 +36,7 @@ to_wasm!(
for (name, val) in original.get_additional_properties().map(|node_property| {
(
node_property.property_name.to_uppercase(),
AdditionalPropertyValue::SingleString(node_property.value.unwrap_or("")),
AdditionalPropertyValue::SingleString(node_property.value.unwrap_or("").to_owned()),
)
}) {
additional_properties.properties.insert(name, val);
@ -51,34 +48,22 @@ to_wasm!(
.map(|child| {
child
.to_wasm(wasm_context.clone())
.map(Into::<WasmAstNode<'_, '_>>::into)
.map(Into::<WasmAstNode>::into)
})
.chain(original.children.iter().map(|child| {
child
.to_wasm(wasm_context.clone())
.map(Into::<WasmAstNode<'_, '_>>::into)
.map(Into::<WasmAstNode>::into)
}))
.collect::<Result<Vec<_>, _>>()?;
Ok(WasmDocument {
standard_properties,
additional_properties,
Ok((
children,
category,
path,
})
WasmDocument {
additional_properties,
category: category.map(str::to_owned),
path,
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmDocument<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::Document(self)
}
}
#[cfg(feature = "wasm_test")]
impl<'s, 'p> ElispFact<'s> for WasmDocument<'s, 'p> {
fn get_elisp_name<'b>(&'b self) -> std::borrow::Cow<'s, str> {
"org-data".into()
}
}

View File

@ -1,36 +1,43 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::Drawer;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmDrawer<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmDrawer {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmDrawer<'s, 'p>,
WasmDrawer,
Drawer<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::Drawer(original) },
{ "TODO".into() },
{
Ok(WasmDrawer {
standard_properties,
children: Vec::new(),
})
let children = original
.children
.iter()
.map(|child| {
child
.to_wasm(wasm_context.clone())
.map(Into::<WasmAstNode>::into)
})
.collect::<Result<Vec<_>, _>>()?;
Ok((
children,
WasmDrawer {
additional_properties: AdditionalProperties::default(),
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmDrawer<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::Drawer(self)
}
}

View File

@ -1,36 +1,43 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::DynamicBlock;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmDynamicBlock<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmDynamicBlock {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmDynamicBlock<'s, 'p>,
WasmDynamicBlock,
DynamicBlock<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::DynamicBlock(original) },
{ "TODO".into() },
{
Ok(WasmDynamicBlock {
standard_properties,
children: Vec::new(),
})
let children = original
.children
.iter()
.map(|child| {
child
.to_wasm(wasm_context.clone())
.map(Into::<WasmAstNode>::into)
})
.collect::<Result<Vec<_>, _>>()?;
Ok((
children,
WasmDynamicBlock {
additional_properties: AdditionalProperties::default(),
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmDynamicBlock<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::DynamicBlock(self)
}
}

View File

@ -1,36 +1,33 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::Entity;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmEntity<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmEntity {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmEntity<'s, 'p>,
WasmEntity,
Entity<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::Entity(original) },
{ "TODO".into() },
{
Ok(WasmEntity {
standard_properties,
children: Vec::new(),
})
Ok((
Vec::new(),
WasmEntity {
additional_properties: AdditionalProperties::default(),
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmEntity<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::Entity(self)
}
}

View File

@ -1,36 +1,33 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::ExampleBlock;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmExampleBlock<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmExampleBlock {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmExampleBlock<'s, 'p>,
WasmExampleBlock,
ExampleBlock<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::ExampleBlock(original) },
{ "TODO".into() },
{
Ok(WasmExampleBlock {
standard_properties,
children: Vec::new(),
})
Ok((
Vec::new(),
WasmExampleBlock {
additional_properties: AdditionalProperties::default(),
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmExampleBlock<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::ExampleBlock(self)
}
}

View File

@ -1,36 +1,33 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::ExportBlock;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmExportBlock<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmExportBlock {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmExportBlock<'s, 'p>,
WasmExportBlock,
ExportBlock<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::ExportBlock(original) },
{ "TODO".into() },
{
Ok(WasmExportBlock {
standard_properties,
children: Vec::new(),
})
Ok((
Vec::new(),
WasmExportBlock {
additional_properties: AdditionalProperties::default(),
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmExportBlock<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::ExportBlock(self)
}
}

View File

@ -1,36 +1,33 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::ExportSnippet;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmExportSnippet<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmExportSnippet {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmExportSnippet<'s, 'p>,
WasmExportSnippet,
ExportSnippet<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::ExportSnippet(original) },
{ "TODO".into() },
{
Ok(WasmExportSnippet {
standard_properties,
children: Vec::new(),
})
Ok((
Vec::new(),
WasmExportSnippet {
additional_properties: AdditionalProperties::default(),
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmExportSnippet<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::ExportSnippet(self)
}
}

View File

@ -1,36 +1,33 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::FixedWidthArea;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmFixedWidthArea<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmFixedWidthArea {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmFixedWidthArea<'s, 'p>,
WasmFixedWidthArea,
FixedWidthArea<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::FixedWidthArea(original) },
{ "TODO".into() },
{
Ok(WasmFixedWidthArea {
standard_properties,
children: Vec::new(),
})
Ok((
Vec::new(),
WasmFixedWidthArea {
additional_properties: AdditionalProperties::default(),
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmFixedWidthArea<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::FixedWidthArea(self)
}
}

View File

@ -1,36 +1,43 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::FootnoteDefinition;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmFootnoteDefinition<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmFootnoteDefinition {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmFootnoteDefinition<'s, 'p>,
WasmFootnoteDefinition,
FootnoteDefinition<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::FootnoteDefinition(original) },
{ "TODO".into() },
{
Ok(WasmFootnoteDefinition {
standard_properties,
children: Vec::new(),
})
let children = original
.children
.iter()
.map(|child| {
child
.to_wasm(wasm_context.clone())
.map(Into::<WasmAstNode>::into)
})
.collect::<Result<Vec<_>, _>>()?;
Ok((
children,
WasmFootnoteDefinition {
additional_properties: AdditionalProperties::default(),
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmFootnoteDefinition<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::FootnoteDefinition(self)
}
}

View File

@ -1,36 +1,33 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::FootnoteReference;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmFootnoteReference<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmFootnoteReference {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmFootnoteReference<'s, 'p>,
WasmFootnoteReference,
FootnoteReference<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::FootnoteReference(original) },
{ "TODO".into() },
{
Ok(WasmFootnoteReference {
standard_properties,
children: Vec::new(),
})
Ok((
Vec::new(),
WasmFootnoteReference {
additional_properties: AdditionalProperties::default(),
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmFootnoteReference<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::FootnoteReference(self)
}
}

View File

@ -1,36 +1,43 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::Heading;
use crate::wasm::to_wasm::ToWasmStandardProperties;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "headline")]
pub struct WasmHeadline<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmHeadline {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmHeadline<'s, 'p>,
WasmHeadline,
Heading<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::Headline(original) },
{ "TODO".into() },
{
Ok(WasmHeadline {
standard_properties,
children: Vec::new(),
})
let children = original
.children
.iter()
.map(|child| {
child
.to_wasm(wasm_context.clone())
.map(Into::<WasmAstNode>::into)
})
.collect::<Result<Vec<_>, _>>()?;
Ok((
children,
WasmHeadline {
additional_properties: AdditionalProperties::default(),
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmHeadline<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::Headline(self)
}
}

View File

@ -1,36 +1,33 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::HorizontalRule;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmHorizontalRule<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmHorizontalRule {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmHorizontalRule<'s, 'p>,
WasmHorizontalRule,
HorizontalRule<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::HorizontalRule(original) },
{ "TODO".into() },
{
Ok(WasmHorizontalRule {
standard_properties,
children: Vec::new(),
})
Ok((
Vec::new(),
WasmHorizontalRule {
additional_properties: AdditionalProperties::default(),
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmHorizontalRule<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::HorizontalRule(self)
}
}

View File

@ -1,36 +1,33 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::InlineBabelCall;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmInlineBabelCall<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmInlineBabelCall {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmInlineBabelCall<'s, 'p>,
WasmInlineBabelCall,
InlineBabelCall<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::InlineBabelCall(original) },
{ "TODO".into() },
{
Ok(WasmInlineBabelCall {
standard_properties,
children: Vec::new(),
})
Ok((
Vec::new(),
WasmInlineBabelCall {
additional_properties: AdditionalProperties::default(),
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmInlineBabelCall<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::InlineBabelCall(self)
}
}

View File

@ -1,36 +1,33 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::InlineSourceBlock;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmInlineSourceBlock<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmInlineSourceBlock {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmInlineSourceBlock<'s, 'p>,
WasmInlineSourceBlock,
InlineSourceBlock<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::InlineSourceBlock(original) },
{ "TODO".into() },
{
Ok(WasmInlineSourceBlock {
standard_properties,
children: Vec::new(),
})
Ok((
Vec::new(),
WasmInlineSourceBlock {
additional_properties: AdditionalProperties::default(),
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmInlineSourceBlock<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::InlineSourceBlock(self)
}
}

View File

@ -1,36 +1,43 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::Italic;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmItalic<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmItalic {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmItalic<'s, 'p>,
WasmItalic,
Italic<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::Italic(original) },
{ "TODO".into() },
{
Ok(WasmItalic {
standard_properties,
children: Vec::new(),
})
let children = original
.children
.iter()
.map(|child| {
child
.to_wasm(wasm_context.clone())
.map(Into::<WasmAstNode>::into)
})
.collect::<Result<Vec<_>, _>>()?;
Ok((
children,
WasmItalic {
additional_properties: AdditionalProperties::default(),
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmItalic<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::Italic(self)
}
}

View File

@ -1,36 +1,33 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::Keyword;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmKeyword<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmKeyword {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmKeyword<'s, 'p>,
WasmKeyword,
Keyword<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::Keyword(original) },
{ "TODO".into() },
{
Ok(WasmKeyword {
standard_properties,
children: Vec::new(),
})
Ok((
Vec::new(),
WasmKeyword {
additional_properties: AdditionalProperties::default(),
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmKeyword<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::Keyword(self)
}
}

View File

@ -1,36 +1,33 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::LatexEnvironment;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmLatexEnvironment<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmLatexEnvironment {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmLatexEnvironment<'s, 'p>,
WasmLatexEnvironment,
LatexEnvironment<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::LatexEnvironment(original) },
{ "TODO".into() },
{
Ok(WasmLatexEnvironment {
standard_properties,
children: Vec::new(),
})
Ok((
Vec::new(),
WasmLatexEnvironment {
additional_properties: AdditionalProperties::default(),
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmLatexEnvironment<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::LatexEnvironment(self)
}
}

View File

@ -1,36 +1,33 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::LatexFragment;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmLatexFragment<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmLatexFragment {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmLatexFragment<'s, 'p>,
WasmLatexFragment,
LatexFragment<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::LatexFragment(original) },
{ "TODO".into() },
{
Ok(WasmLatexFragment {
standard_properties,
children: Vec::new(),
})
Ok((
Vec::new(),
WasmLatexFragment {
additional_properties: AdditionalProperties::default(),
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmLatexFragment<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::LatexFragment(self)
}
}

View File

@ -1,36 +1,33 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::LineBreak;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmLineBreak<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmLineBreak {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmLineBreak<'s, 'p>,
WasmLineBreak,
LineBreak<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::LineBreak(original) },
{ "TODO".into() },
{
Ok(WasmLineBreak {
standard_properties,
children: Vec::new(),
})
Ok((
Vec::new(),
WasmLineBreak {
additional_properties: AdditionalProperties::default(),
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmLineBreak<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::LineBreak(self)
}
}

View File

@ -3,11 +3,11 @@
/// This exists to make changing the type signature easier.
macro_rules! to_wasm {
($ostruct:ty, $istruct:ty, $original:ident, $wasm_context:ident, $fnbody:tt) => {
impl<'s, 'p> ToWasm<'p> for $istruct {
impl<'s> ToWasm for $istruct {
type Output = $ostruct;
fn to_wasm(
&'p self,
&self,
$wasm_context: crate::wasm::to_wasm::ToWasmContext<'_>,
) -> Result<Self::Output, crate::error::CustomError> {
let $original = self;
@ -15,18 +15,43 @@ macro_rules! to_wasm {
}
}
};
($ostruct:ty, $istruct:ty, $original:ident, $wasm_context:ident, $standard_properties:ident, $fnbody:tt) => {
impl<'s, 'p> ToWasm<'p> for $istruct {
type Output = $ostruct;
($ostruct:ty, $istruct:ty, $original:ident, $wasm_context:ident, $toastnodebody:tt, $elispnamebody:tt, $fnbody:tt) => {
impl<'s> ToWasm for $istruct {
type Output = crate::wasm::ast_node::WasmAstNodeWrapper<$ostruct>;
fn to_wasm(
&'p self,
&self,
$wasm_context: crate::wasm::to_wasm::ToWasmContext<'_>,
) -> Result<Self::Output, crate::error::CustomError> {
let $original = self;
let $standard_properties =
let standard_properties =
self.to_wasm_standard_properties($wasm_context.clone())?;
$fnbody
$fnbody.map(
|(children, inner)| crate::wasm::ast_node::WasmAstNodeWrapper {
ast_node: inner.get_elisp_name().into_owned(),
standard_properties,
children,
properties: inner,
},
)
}
}
impl Into<WasmAstNode> for crate::wasm::ast_node::WasmAstNodeWrapper<$ostruct> {
fn into(self) -> WasmAstNode {
let $original = self;
let ret = $toastnodebody;
ret
}
}
#[cfg(feature = "wasm_test")]
impl<'s> crate::compare::ElispFact<'s> for $ostruct {
fn get_elisp_name<'b>(&'b self) -> std::borrow::Cow<'s, str> {
let $original = self;
let ret = $elispnamebody;
ret
}
}
};

View File

@ -67,6 +67,7 @@ pub use additional_property::AdditionalProperties;
pub use additional_property::AdditionalPropertyValue;
pub(crate) use angle_link::WasmAngleLink;
pub use ast_node::WasmAstNode;
pub use ast_node::WasmAstNodeWrapper;
pub(crate) use babel_call::WasmBabelCall;
pub(crate) use bold::WasmBold;
pub(crate) use center_block::WasmCenterBlock;

View File

@ -1,30 +1,33 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::NodeProperty;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmNodeProperty<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmNodeProperty {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmNodeProperty<'s, 'p>,
WasmNodeProperty,
NodeProperty<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::NodeProperty(original) },
{ "TODO".into() },
{
Ok(WasmNodeProperty {
standard_properties,
children: Vec::new(),
})
Ok((
Vec::new(),
WasmNodeProperty {
additional_properties: AdditionalProperties::default(),
},
))
}
);

View File

@ -1,36 +1,33 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::OrgMacro;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmOrgMacro<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmOrgMacro {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmOrgMacro<'s, 'p>,
WasmOrgMacro,
OrgMacro<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::OrgMacro(original) },
{ "TODO".into() },
{
Ok(WasmOrgMacro {
standard_properties,
children: Vec::new(),
})
Ok((
Vec::new(),
WasmOrgMacro {
additional_properties: AdditionalProperties::default(),
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmOrgMacro<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::OrgMacro(self)
}
}

View File

@ -1,32 +1,28 @@
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;
use super::AdditionalProperties;
#[cfg(feature = "wasm_test")]
use crate::compare::ElispFact;
use crate::types::GetAffiliatedKeywords;
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> {
pub(crate) standard_properties: WasmStandardProperties,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmParagraph {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties<'s, 'p>,
pub(crate) children: Vec<WasmAstNode<'s, 'p>>,
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmParagraph<'s, 'p>,
WasmParagraph,
Paragraph<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::Paragraph(original) },
{ "paragraph".into() },
{
let additional_properties = original
.get_affiliated_keywords()
@ -38,27 +34,15 @@ to_wasm!(
.map(|child| {
child
.to_wasm(wasm_context.clone())
.map(Into::<WasmAstNode<'_, '_>>::into)
.map(Into::<WasmAstNode>::into)
})
.collect::<Result<Vec<_>, _>>()?;
Ok(WasmParagraph {
standard_properties,
additional_properties,
Ok((
children,
})
WasmParagraph {
additional_properties,
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmParagraph<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::Paragraph(self)
}
}
#[cfg(feature = "wasm_test")]
impl<'s, 'p> ElispFact<'s> for WasmParagraph<'s, 'p> {
fn get_elisp_name<'b>(&'b self) -> std::borrow::Cow<'s, str> {
"paragraph".into()
}
}

View File

@ -1,12 +1,14 @@
use serde::Deserialize;
use serde::Serialize;
use super::ast_node::WasmAstNodeWrapper;
use super::document::WasmDocument;
#[derive(Debug, Serialize)]
#[derive(Debug, Serialize, Deserialize)]
#[serde(tag = "status", content = "content")]
pub enum ParseResult<'s, 'p> {
pub enum ParseResult {
#[serde(rename = "success")]
Success(WasmDocument<'s, 'p>),
Success(WasmAstNodeWrapper<WasmDocument>),
#[serde(rename = "error")]
Error(String),

View File

@ -1,36 +1,33 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::PlainLink;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmPlainLink<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmPlainLink {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmPlainLink<'s, 'p>,
WasmPlainLink,
PlainLink<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::PlainLink(original) },
{ "TODO".into() },
{
Ok(WasmPlainLink {
standard_properties,
children: Vec::new(),
})
Ok((
Vec::new(),
WasmPlainLink {
additional_properties: AdditionalProperties::default(),
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmPlainLink<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::PlainLink(self)
}
}

View File

@ -1,36 +1,43 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::PlainList;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmPlainList<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmPlainList {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmPlainList<'s, 'p>,
WasmPlainList,
PlainList<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::PlainList(original) },
{ "TODO".into() },
{
Ok(WasmPlainList {
standard_properties,
children: Vec::new(),
})
let children = original
.children
.iter()
.map(|child| {
child
.to_wasm(wasm_context.clone())
.map(Into::<WasmAstNode>::into)
})
.collect::<Result<Vec<_>, _>>()?;
Ok((
children,
WasmPlainList {
additional_properties: AdditionalProperties::default(),
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmPlainList<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::PlainList(self)
}
}

View File

@ -1,30 +1,43 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::PlainListItem;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmPlainListItem<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmPlainListItem {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmPlainListItem<'s, 'p>,
WasmPlainListItem,
PlainListItem<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::PlainListItem(original) },
{ "TODO".into() },
{
Ok(WasmPlainListItem {
standard_properties,
children: Vec::new(),
})
let children = original
.children
.iter()
.map(|child| {
child
.to_wasm(wasm_context.clone())
.map(Into::<WasmAstNode>::into)
})
.collect::<Result<Vec<_>, _>>()?;
Ok((
children,
WasmPlainListItem {
additional_properties: AdditionalProperties::default(),
},
))
}
);

View File

@ -1,36 +1,33 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::PlainText;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmPlainText<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmPlainText {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmPlainText<'s, 'p>,
WasmPlainText,
PlainText<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::PlainText(original) },
{ "plain-text".into() },
{
Ok(WasmPlainText {
standard_properties,
children: Vec::new(),
})
Ok((
Vec::new(),
WasmPlainText {
additional_properties: AdditionalProperties::default(),
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmPlainText<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::PlainText(self)
}
}

View File

@ -1,36 +1,33 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::Planning;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmPlanning<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmPlanning {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmPlanning<'s, 'p>,
WasmPlanning,
Planning<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::Planning(original) },
{ "TODO".into() },
{
Ok(WasmPlanning {
standard_properties,
children: Vec::new(),
})
Ok((
Vec::new(),
WasmPlanning {
additional_properties: AdditionalProperties::default(),
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmPlanning<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::Planning(self)
}
}

View File

@ -1,36 +1,43 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::PropertyDrawer;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmPropertyDrawer<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmPropertyDrawer {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmPropertyDrawer<'s, 'p>,
WasmPropertyDrawer,
PropertyDrawer<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::PropertyDrawer(original) },
{ "TODO".into() },
{
Ok(WasmPropertyDrawer {
standard_properties,
children: Vec::new(),
})
let children = original
.children
.iter()
.map(|child| {
child
.to_wasm(wasm_context.clone())
.map(Into::<WasmAstNode>::into)
})
.collect::<Result<Vec<_>, _>>()?;
Ok((
children,
WasmPropertyDrawer {
additional_properties: AdditionalProperties::default(),
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmPropertyDrawer<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::PropertyDrawer(self)
}
}

View File

@ -1,36 +1,43 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::QuoteBlock;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmQuoteBlock<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmQuoteBlock {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmQuoteBlock<'s, 'p>,
WasmQuoteBlock,
QuoteBlock<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::QuoteBlock(original) },
{ "TODO".into() },
{
Ok(WasmQuoteBlock {
standard_properties,
children: Vec::new(),
})
let children = original
.children
.iter()
.map(|child| {
child
.to_wasm(wasm_context.clone())
.map(Into::<WasmAstNode>::into)
})
.collect::<Result<Vec<_>, _>>()?;
Ok((
children,
WasmQuoteBlock {
additional_properties: AdditionalProperties::default(),
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmQuoteBlock<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::QuoteBlock(self)
}
}

View File

@ -1,36 +1,43 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::RadioLink;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmRadioLink<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmRadioLink {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmRadioLink<'s, 'p>,
WasmRadioLink,
RadioLink<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::RadioLink(original) },
{ "TODO".into() },
{
Ok(WasmRadioLink {
standard_properties,
children: Vec::new(),
})
let children = original
.children
.iter()
.map(|child| {
child
.to_wasm(wasm_context.clone())
.map(Into::<WasmAstNode>::into)
})
.collect::<Result<Vec<_>, _>>()?;
Ok((
children,
WasmRadioLink {
additional_properties: AdditionalProperties::default(),
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmRadioLink<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::RadioLink(self)
}
}

View File

@ -1,36 +1,43 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::RadioTarget;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmRadioTarget<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmRadioTarget {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmRadioTarget<'s, 'p>,
WasmRadioTarget,
RadioTarget<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::RadioTarget(original) },
{ "TODO".into() },
{
Ok(WasmRadioTarget {
standard_properties,
children: Vec::new(),
})
let children = original
.children
.iter()
.map(|child| {
child
.to_wasm(wasm_context.clone())
.map(Into::<WasmAstNode>::into)
})
.collect::<Result<Vec<_>, _>>()?;
Ok((
children,
WasmRadioTarget {
additional_properties: AdditionalProperties::default(),
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmRadioTarget<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::RadioTarget(self)
}
}

View File

@ -1,36 +1,43 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::RegularLink;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmRegularLink<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmRegularLink {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmRegularLink<'s, 'p>,
WasmRegularLink,
RegularLink<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::RegularLink(original) },
{ "TODO".into() },
{
Ok(WasmRegularLink {
standard_properties,
children: Vec::new(),
})
let children = original
.children
.iter()
.map(|child| {
child
.to_wasm(wasm_context.clone())
.map(Into::<WasmAstNode>::into)
})
.collect::<Result<Vec<_>, _>>()?;
Ok((
children,
WasmRegularLink {
additional_properties: AdditionalProperties::default(),
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmRegularLink<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::RegularLink(self)
}
}

View File

@ -1,31 +1,27 @@
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;
use super::AdditionalProperties;
#[cfg(feature = "wasm_test")]
use crate::compare::ElispFact;
use crate::types::Section;
use crate::wasm::to_wasm::ToWasmStandardProperties;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "section")]
pub struct WasmSection<'s, 'p> {
pub(crate) standard_properties: WasmStandardProperties,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmSection {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties<'s, 'p>,
pub(crate) children: Vec<WasmAstNode<'s, 'p>>,
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmSection<'s, 'p>,
WasmSection,
Section<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::Section(original) },
{ "section".into() },
{
let children = original
.children
@ -33,27 +29,15 @@ to_wasm!(
.map(|child| {
child
.to_wasm(wasm_context.clone())
.map(Into::<WasmAstNode<'_, '_>>::into)
.map(Into::<WasmAstNode>::into)
})
.collect::<Result<Vec<_>, _>>()?;
Ok(WasmSection {
standard_properties,
additional_properties: AdditionalProperties::default(),
Ok((
children,
})
WasmSection {
additional_properties: AdditionalProperties::default(),
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmSection<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::Section(self)
}
}
#[cfg(feature = "wasm_test")]
impl<'s, 'p> ElispFact<'s> for WasmSection<'s, 'p> {
fn get_elisp_name<'b>(&'b self) -> std::borrow::Cow<'s, str> {
"section".into()
}
}

View File

@ -1,36 +1,43 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::SpecialBlock;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmSpecialBlock<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmSpecialBlock {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmSpecialBlock<'s, 'p>,
WasmSpecialBlock,
SpecialBlock<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::SpecialBlock(original) },
{ "TODO".into() },
{
Ok(WasmSpecialBlock {
standard_properties,
children: Vec::new(),
})
let children = original
.children
.iter()
.map(|child| {
child
.to_wasm(wasm_context.clone())
.map(Into::<WasmAstNode>::into)
})
.collect::<Result<Vec<_>, _>>()?;
Ok((
children,
WasmSpecialBlock {
additional_properties: AdditionalProperties::default(),
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmSpecialBlock<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::SpecialBlock(self)
}
}

View File

@ -1,36 +1,33 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::SrcBlock;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmSrcBlock<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmSrcBlock {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmSrcBlock<'s, 'p>,
WasmSrcBlock,
SrcBlock<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::SrcBlock(original) },
{ "TODO".into() },
{
Ok(WasmSrcBlock {
standard_properties,
children: Vec::new(),
})
Ok((
Vec::new(),
WasmSrcBlock {
additional_properties: AdditionalProperties::default(),
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmSrcBlock<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::SrcBlock(self)
}
}

View File

@ -1,3 +1,4 @@
use serde::Deserialize;
use serde::Serialize;
use super::to_wasm::ToWasmContext;
@ -5,12 +6,15 @@ use super::to_wasm::ToWasmStandardProperties;
use crate::types::PostBlank;
use crate::types::StandardProperties;
#[derive(Debug, Serialize)]
#[derive(Debug, Serialize, Deserialize)]
pub(crate) struct WasmStandardProperties {
pub(crate) begin: usize,
pub(crate) end: usize,
#[serde(rename = "contents-begin")]
pub(crate) contents_begin: Option<usize>,
#[serde(rename = "contents-end")]
pub(crate) contents_end: Option<usize>,
#[serde(rename = "post-blank")]
pub(crate) post_blank: PostBlank,
}

View File

@ -1,36 +1,33 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::StatisticsCookie;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmStatisticsCookie<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmStatisticsCookie {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmStatisticsCookie<'s, 'p>,
WasmStatisticsCookie,
StatisticsCookie<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::StatisticsCookie(original) },
{ "TODO".into() },
{
Ok(WasmStatisticsCookie {
standard_properties,
children: Vec::new(),
})
Ok((
Vec::new(),
WasmStatisticsCookie {
additional_properties: AdditionalProperties::default(),
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmStatisticsCookie<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::StatisticsCookie(self)
}
}

View File

@ -1,36 +1,43 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::StrikeThrough;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmStrikeThrough<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmStrikeThrough {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmStrikeThrough<'s, 'p>,
WasmStrikeThrough,
StrikeThrough<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::StrikeThrough(original) },
{ "TODO".into() },
{
Ok(WasmStrikeThrough {
standard_properties,
children: Vec::new(),
})
let children = original
.children
.iter()
.map(|child| {
child
.to_wasm(wasm_context.clone())
.map(Into::<WasmAstNode>::into)
})
.collect::<Result<Vec<_>, _>>()?;
Ok((
children,
WasmStrikeThrough {
additional_properties: AdditionalProperties::default(),
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmStrikeThrough<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::StrikeThrough(self)
}
}

View File

@ -1,36 +1,43 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::Subscript;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmSubscript<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmSubscript {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmSubscript<'s, 'p>,
WasmSubscript,
Subscript<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::Subscript(original) },
{ "TODO".into() },
{
Ok(WasmSubscript {
standard_properties,
children: Vec::new(),
})
let children = original
.children
.iter()
.map(|child| {
child
.to_wasm(wasm_context.clone())
.map(Into::<WasmAstNode>::into)
})
.collect::<Result<Vec<_>, _>>()?;
Ok((
children,
WasmSubscript {
additional_properties: AdditionalProperties::default(),
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmSubscript<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::Subscript(self)
}
}

View File

@ -1,36 +1,43 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::Superscript;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmSuperscript<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmSuperscript {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmSuperscript<'s, 'p>,
WasmSuperscript,
Superscript<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::Superscript(original) },
{ "TODO".into() },
{
Ok(WasmSuperscript {
standard_properties,
children: Vec::new(),
})
let children = original
.children
.iter()
.map(|child| {
child
.to_wasm(wasm_context.clone())
.map(Into::<WasmAstNode>::into)
})
.collect::<Result<Vec<_>, _>>()?;
Ok((
children,
WasmSuperscript {
additional_properties: AdditionalProperties::default(),
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmSuperscript<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::Superscript(self)
}
}

View File

@ -1,36 +1,43 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::Table;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmTable<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmTable {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmTable<'s, 'p>,
WasmTable,
Table<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::Table(original) },
{ "TODO".into() },
{
Ok(WasmTable {
standard_properties,
children: Vec::new(),
})
let children = original
.children
.iter()
.map(|child| {
child
.to_wasm(wasm_context.clone())
.map(Into::<WasmAstNode>::into)
})
.collect::<Result<Vec<_>, _>>()?;
Ok((
children,
WasmTable {
additional_properties: AdditionalProperties::default(),
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmTable<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::Table(self)
}
}

View File

@ -1,30 +1,43 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::TableCell;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmTableCell<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmTableCell {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmTableCell<'s, 'p>,
WasmTableCell,
TableCell<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::TableCell(original) },
{ "TODO".into() },
{
Ok(WasmTableCell {
standard_properties,
children: Vec::new(),
})
let children = original
.children
.iter()
.map(|child| {
child
.to_wasm(wasm_context.clone())
.map(Into::<WasmAstNode>::into)
})
.collect::<Result<Vec<_>, _>>()?;
Ok((
children,
WasmTableCell {
additional_properties: AdditionalProperties::default(),
},
))
}
);

View File

@ -1,30 +1,43 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::TableRow;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmTableRow<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmTableRow {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmTableRow<'s, 'p>,
WasmTableRow,
TableRow<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::TableRow(original) },
{ "TODO".into() },
{
Ok(WasmTableRow {
standard_properties,
children: Vec::new(),
})
let children = original
.children
.iter()
.map(|child| {
child
.to_wasm(wasm_context.clone())
.map(Into::<WasmAstNode>::into)
})
.collect::<Result<Vec<_>, _>>()?;
Ok((
children,
WasmTableRow {
additional_properties: AdditionalProperties::default(),
},
))
}
);

View File

@ -1,36 +1,33 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::Target;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmTarget<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmTarget {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmTarget<'s, 'p>,
WasmTarget,
Target<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::Target(original) },
{ "TODO".into() },
{
Ok(WasmTarget {
standard_properties,
children: Vec::new(),
})
Ok((
Vec::new(),
WasmTarget {
additional_properties: AdditionalProperties::default(),
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmTarget<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::Target(self)
}
}

View File

@ -1,36 +1,33 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::Timestamp;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmTimestamp<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmTimestamp {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmTimestamp<'s, 'p>,
WasmTimestamp,
Timestamp<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::Timestamp(original) },
{ "TODO".into() },
{
Ok(WasmTimestamp {
standard_properties,
children: Vec::new(),
})
Ok((
Vec::new(),
WasmTimestamp {
additional_properties: AdditionalProperties::default(),
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmTimestamp<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::Timestamp(self)
}
}

View File

@ -1,13 +1,14 @@
use super::macros::to_wasm;
use super::WasmAstNode;
use crate::error::CustomError;
use crate::types::DocumentElement;
use crate::types::Element;
use crate::types::Object;
pub trait ToWasm<'p> {
pub trait ToWasm {
type Output;
fn to_wasm(&'p self, full_document: ToWasmContext<'_>) -> Result<Self::Output, CustomError>;
fn to_wasm(&self, full_document: ToWasmContext<'_>) -> Result<Self::Output, CustomError>;
}
pub(crate) trait ToWasmStandardProperties {
@ -30,125 +31,94 @@ impl<'s> ToWasmContext<'s> {
}
}
to_wasm!(
WasmAstNode<'s, 'p>,
Element<'s>,
original,
wasm_context,
standard_properties,
{
match original {
Element::Paragraph(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Element::PlainList(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Element::CenterBlock(inner) => {
inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into)
}
Element::QuoteBlock(inner) => {
inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into)
}
Element::SpecialBlock(inner) => {
inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into)
}
Element::DynamicBlock(inner) => {
inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into)
}
Element::FootnoteDefinition(inner) => {
inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into)
}
Element::Comment(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Element::Drawer(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Element::PropertyDrawer(inner) => {
inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into)
}
Element::Table(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Element::VerseBlock(inner) => {
inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into)
}
Element::CommentBlock(inner) => {
inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into)
}
Element::ExampleBlock(inner) => {
inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into)
}
Element::ExportBlock(inner) => {
inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into)
}
Element::SrcBlock(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Element::Clock(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Element::DiarySexp(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Element::Planning(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Element::FixedWidthArea(inner) => {
inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into)
}
Element::HorizontalRule(inner) => {
inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into)
}
Element::Keyword(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Element::BabelCall(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Element::LatexEnvironment(inner) => {
inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into)
}
to_wasm!(WasmAstNode, DocumentElement<'s>, original, wasm_context, {
match original {
DocumentElement::Heading(inner) => {
inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into)
}
DocumentElement::Section(inner) => {
inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into)
}
}
);
});
to_wasm!(
WasmAstNode<'s, 'p>,
Object<'s>,
original,
wasm_context,
standard_properties,
{
match original {
Object::Bold(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Object::Italic(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Object::Underline(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Object::StrikeThrough(inner) => {
inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into)
}
Object::Code(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Object::Verbatim(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Object::PlainText(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Object::RegularLink(inner) => {
inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into)
}
Object::RadioLink(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Object::RadioTarget(inner) => {
inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into)
}
Object::PlainLink(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Object::AngleLink(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Object::OrgMacro(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Object::Entity(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Object::LatexFragment(inner) => {
inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into)
}
Object::ExportSnippet(inner) => {
inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into)
}
Object::FootnoteReference(inner) => {
inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into)
}
Object::Citation(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Object::CitationReference(inner) => {
inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into)
}
Object::InlineBabelCall(inner) => {
inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into)
}
Object::InlineSourceBlock(inner) => {
inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into)
}
Object::LineBreak(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Object::Target(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Object::StatisticsCookie(inner) => {
inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into)
}
Object::Subscript(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Object::Superscript(inner) => {
inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into)
}
Object::Timestamp(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
to_wasm!(WasmAstNode, Element<'s>, original, wasm_context, {
match original {
Element::Paragraph(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Element::PlainList(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Element::CenterBlock(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Element::QuoteBlock(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Element::SpecialBlock(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Element::DynamicBlock(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Element::FootnoteDefinition(inner) => {
inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into)
}
Element::Comment(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Element::Drawer(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Element::PropertyDrawer(inner) => {
inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into)
}
Element::Table(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Element::VerseBlock(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Element::CommentBlock(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Element::ExampleBlock(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Element::ExportBlock(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Element::SrcBlock(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Element::Clock(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Element::DiarySexp(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Element::Planning(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Element::FixedWidthArea(inner) => {
inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into)
}
Element::HorizontalRule(inner) => {
inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into)
}
Element::Keyword(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Element::BabelCall(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Element::LatexEnvironment(inner) => {
inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into)
}
}
);
});
to_wasm!(WasmAstNode, Object<'s>, original, wasm_context, {
match original {
Object::Bold(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Object::Italic(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Object::Underline(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Object::StrikeThrough(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Object::Code(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Object::Verbatim(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Object::PlainText(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Object::RegularLink(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Object::RadioLink(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Object::RadioTarget(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Object::PlainLink(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Object::AngleLink(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Object::OrgMacro(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Object::Entity(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Object::LatexFragment(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Object::ExportSnippet(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Object::FootnoteReference(inner) => {
inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into)
}
Object::Citation(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Object::CitationReference(inner) => {
inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into)
}
Object::InlineBabelCall(inner) => {
inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into)
}
Object::InlineSourceBlock(inner) => {
inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into)
}
Object::LineBreak(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Object::Target(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Object::StatisticsCookie(inner) => {
inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into)
}
Object::Subscript(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Object::Superscript(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
Object::Timestamp(inner) => inner.to_wasm(wasm_context).map(Into::<WasmAstNode>::into),
}
});

View File

@ -1,36 +1,43 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::Underline;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmUnderline<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmUnderline {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmUnderline<'s, 'p>,
WasmUnderline,
Underline<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::Underline(original) },
{ "TODO".into() },
{
Ok(WasmUnderline {
standard_properties,
children: Vec::new(),
})
let children = original
.children
.iter()
.map(|child| {
child
.to_wasm(wasm_context.clone())
.map(Into::<WasmAstNode>::into)
})
.collect::<Result<Vec<_>, _>>()?;
Ok((
children,
WasmUnderline {
additional_properties: AdditionalProperties::default(),
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmUnderline<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::Underline(self)
}
}

View File

@ -1,36 +1,33 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::Verbatim;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmVerbatim<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmVerbatim {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmVerbatim<'s, 'p>,
WasmVerbatim,
Verbatim<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::Verbatim(original) },
{ "TODO".into() },
{
Ok(WasmVerbatim {
standard_properties,
children: Vec::new(),
})
Ok((
Vec::new(),
WasmVerbatim {
additional_properties: AdditionalProperties::default(),
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmVerbatim<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::Verbatim(self)
}
}

View File

@ -1,36 +1,43 @@
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;
use super::AdditionalProperties;
use crate::compare::ElispFact;
use crate::types::VerseBlock;
use crate::wasm::to_wasm::ToWasmStandardProperties;
use crate::wasm::WasmAstNode;
#[derive(Debug, Serialize)]
#[serde(tag = "ast_node")]
#[serde(rename = "org-data")]
pub struct WasmVerseBlock<'s, 'p> {
standard_properties: WasmStandardProperties,
children: Vec<WasmAstNode<'s, 'p>>,
#[derive(Debug, Serialize, Deserialize)]
pub struct WasmVerseBlock {
#[serde(flatten)]
pub(crate) additional_properties: AdditionalProperties,
}
to_wasm!(
WasmVerseBlock<'s, 'p>,
WasmVerseBlock,
VerseBlock<'s>,
original,
wasm_context,
standard_properties,
{ WasmAstNode::VerseBlock(original) },
{ "TODO".into() },
{
Ok(WasmVerseBlock {
standard_properties,
children: Vec::new(),
})
let children = original
.children
.iter()
.map(|child| {
child
.to_wasm(wasm_context.clone())
.map(Into::<WasmAstNode>::into)
})
.collect::<Result<Vec<_>, _>>()?;
Ok((
children,
WasmVerseBlock {
additional_properties: AdditionalProperties::default(),
},
))
}
);
impl<'s, 'p> Into<WasmAstNode<'s, 'p>> for WasmVerseBlock<'s, 'p> {
fn into(self) -> WasmAstNode<'s, 'p> {
WasmAstNode::VerseBlock(self)
}
}

File diff suppressed because it is too large Load Diff

View File

@ -55,7 +55,7 @@ impl<'s> WasmDiffResult<'s> {
original_document: &str,
) -> Result<(), Box<dyn std::error::Error>> {
let status_text = {
if self.is_bad() {
if self.is_self_bad() {
format!(
"{color}BAD{reset}",
color = foreground_color(255, 0, 0),

View File

@ -1,10 +0,0 @@
use super::diff::WasmDiffResult;
use crate::compare::Token;
pub trait WasmElispCompare<'s, 'p> {
fn compare_ast_node<'b>(
&self,
source: &'s str,
emacs: &'b Token<'s>,
) -> Result<WasmDiffResult<'s>, Box<dyn std::error::Error>>;
}

View File

@ -1,387 +0,0 @@
use super::diff::WasmDiffResult;
use super::diff::WasmDiffStatus;
use super::elisp_compare::WasmElispCompare;
use crate::compare::get_emacs_standard_properties;
use crate::compare::get_property;
use crate::compare::get_property_quoted_string;
use crate::compare::unquote;
use crate::compare::Token;
use crate::wasm::AdditionalProperties;
use crate::wasm::AdditionalPropertyValue;
use crate::wasm::WasmStandardProperties;
pub(crate) fn wasm_compare_list<'b, 's: 'b, 'p, EI, WI, WC>(
source: &'s str,
emacs: EI,
wasm: WI,
) -> Result<WasmDiffResult<'s>, Box<dyn std::error::Error>>
where
EI: Iterator<Item = &'b Token<'s>> + ExactSizeIterator,
WI: Iterator<Item = WC> + ExactSizeIterator,
WC: WasmElispCompare<'s, 'p>,
{
let status = Vec::new();
let emacs_length = emacs.len();
let wasm_length = wasm.len();
if emacs_length != wasm_length {
return Ok(WasmDiffResult {
status: vec![WasmDiffStatus::Bad(
format!(
"Child length mismatch (emacs != rust) {:?} != {:?}",
emacs_length, wasm_length
)
.into(),
)],
children: Vec::new(),
name: "".into(),
});
}
let mut child_status = Vec::with_capacity(emacs_length);
for (emacs_child, wasm_child) in emacs.zip(wasm) {
child_status.push(wasm_child.compare_ast_node(source, emacs_child)?);
}
Ok(WasmDiffResult {
status,
children: child_status,
name: "".into(),
})
}
pub(crate) fn wasm_compare_property_quoted_string<
'b,
's,
W,
WV: AsRef<str> + std::fmt::Debug,
WG: Fn(W) -> Option<WV>,
>(
_source: &'s str,
emacs: &'b Token<'s>,
wasm_node: W,
emacs_field: &str,
wasm_value_getter: WG,
) -> Result<WasmDiffResult<'s>, Box<dyn std::error::Error>> {
let mut result = WasmDiffResult::default();
let emacs_value = get_property_quoted_string(emacs, emacs_field)?;
let wasm_value = wasm_value_getter(wasm_node);
if wasm_value.as_ref().map(|s| s.as_ref()) != emacs_value.as_deref() {
result.status.push(WasmDiffStatus::Bad(
format!(
"Property mismatch. Property=({property}) Emacs=({emacs:?}) Wasm=({wasm:?}).",
property = emacs_field,
emacs = emacs_value,
wasm = wasm_value,
)
.into(),
))
}
Ok(result)
}
pub(crate) fn wasm_compare_property_list_of_quoted_string<
'b,
's,
WI: Iterator<Item = WV> + ExactSizeIterator,
W,
WV: AsRef<str> + std::fmt::Debug,
WG: Fn(W) -> Option<WI>,
>(
_source: &'s str,
emacs: &'b Token<'s>,
wasm_node: W,
emacs_field: &str,
wasm_value_getter: WG,
) -> Result<WasmDiffResult<'s>, Box<dyn std::error::Error>> {
let mut result = WasmDiffResult::default();
let emacs_value = get_property(emacs, emacs_field)?
.map(Token::as_list)
.map_or(Ok(None), |r| r.map(Some))?;
let wasm_value = wasm_value_getter(wasm_node);
match (emacs_value, wasm_value) {
(None, None) => {}
(None, Some(_)) | (Some(_), None) => {
return Ok(WasmDiffResult {
status: vec![WasmDiffStatus::Bad(
format!(
"Property list length mismatch. Property=({property}) Emacs=({emacs:?}) Wasm=({wasm:?}).",
property = emacs_field,
emacs = if emacs_value.is_some() {"Some"} else {"None"},
wasm = if !emacs_value.is_some() {"Some"} else {"None"}
)
.into(),
)],
children: Vec::new(),
name: "".into(),
});
}
(Some(el), Some(wl)) if el.len() != wl.len() => {
return Ok(WasmDiffResult {
status: vec![WasmDiffStatus::Bad(
format!(
"Property list length mismatch. Property=({property}) Emacs=({emacs:?}) Wasm=({wasm:?}).",
property = emacs_field,
emacs = el.len(),
wasm = wl.len()
)
.into(),
)],
children: Vec::new(),
name: "".into(),
});
}
(Some(el), Some(wl)) => {
for (e, w) in el.iter().zip(wl) {
let e = unquote(e.as_atom()?)?;
let w = w.as_ref();
if e != w {
result.status.push(WasmDiffStatus::Bad(
format!(
"Property list value mismatch. Property=({property}) Emacs=({emacs:?}) Wasm=({wasm:?}).",
property = emacs_field,
emacs = e,
wasm = w
)
.into(),
));
}
}
}
};
Ok(result)
}
pub(crate) fn wasm_compare_property_optional_pair<
'b,
's,
W,
WV: AsRef<str> + std::fmt::Debug,
WOV: AsRef<str> + std::fmt::Debug,
WG: Fn(W) -> Option<(Option<WOV>, WV)>,
>(
_source: &'s str,
emacs: &'b Token<'s>,
wasm_node: W,
emacs_field: &str,
wasm_value_getter: WG,
) -> Result<WasmDiffResult<'s>, Box<dyn std::error::Error>> {
let mut result = WasmDiffResult::default();
let emacs_value = get_property(emacs, emacs_field)?
.map(Token::as_list)
.map_or(Ok(None), |r| r.map(Some))?;
let wasm_value = wasm_value_getter(wasm_node);
match (emacs_value, &wasm_value) {
(None, None) => {}
(None, Some(_)) | (Some(_), None) => {
return Ok(WasmDiffResult {
status: vec![WasmDiffStatus::Bad(
format!(
"Property list length mismatch. Property=({property}) Emacs=({emacs:?}) Wasm=({wasm:?}).",
property = emacs_field,
emacs = if emacs_value.is_some() {"Some"} else {"None"},
wasm = if !emacs_value.is_some() {"Some"} else {"None"}
)
.into(),
)],
children: Vec::new(),
name: "".into(),
});
}
(Some(el), Some((Some(owl), wl))) if el.len() == 3 => {
let e = el
.first()
.map(Token::as_atom)
.map_or(Ok(None), |r| r.map(Some))?
.map(unquote)
.map_or(Ok(None), |r| r.map(Some))?
.expect("Above match proved length to be 3.");
let oe = el
.get(2)
.map(Token::as_atom)
.map_or(Ok(None), |r| r.map(Some))?
.map(unquote)
.map_or(Ok(None), |r| r.map(Some))?
.expect("Above match proved length to be 3.");
let w = wl.as_ref();
let ow = owl.as_ref();
if e != w {
result.status.push(WasmDiffStatus::Bad(
format!(
"Property mismatch. Property=({property}) Emacs=({emacs:?}) Wasm=({wasm:?}).",
property = "end",
emacs = e,
wasm = w,
)
.into(),
));
}
if oe != ow {
result.status.push(WasmDiffStatus::Bad(
format!(
"Property mismatch. Property=({property}) Emacs=({emacs:?}) Wasm=({wasm:?}).",
property = "end",
emacs = oe,
wasm = ow,
)
.into(),
));
}
}
(Some(el), Some((None, wl))) if el.len() == 1 => {
let e = el
.first()
.map(Token::as_atom)
.map_or(Ok(None), |r| r.map(Some))?
.map(unquote)
.map_or(Ok(None), |r| r.map(Some))?
.expect("Above match proved length to be 3.");
let w = wl.as_ref();
if e != w {
result.status.push(WasmDiffStatus::Bad(
format!(
"Property mismatch. Property=({property}) Emacs=({emacs:?}) Wasm=({wasm:?}).",
property = "end",
emacs = e,
wasm = w,
)
.into(),
));
}
}
(Some(el), Some(_)) => {
return Ok(WasmDiffResult {
status: vec![WasmDiffStatus::Bad(
format!(
"Property list length mismatch. Property=({property}) Emacs=({emacs:?}) Wasm=({wasm:?}).",
property = emacs_field,
emacs = el.len(),
wasm = wasm_value
)
.into(),
)],
children: Vec::new(),
name: "".into(),
});
}
}
Ok(result)
}
pub(crate) fn wasm_compare_standard_properties<'b, 's>(
_source: &'s str,
emacs: &'b Token<'s>,
wasm: &WasmStandardProperties,
) -> Result<WasmDiffResult<'s>, Box<dyn std::error::Error>> {
let mut result = WasmDiffResult::default();
let mut layer = WasmDiffResult::default();
layer.name = "standard-properties".into();
let standard_properties = get_emacs_standard_properties(emacs)?;
if Some(wasm.begin) != standard_properties.begin {
layer.status.push(WasmDiffStatus::Bad(
format!(
"Property mismatch. Property=({property}) Emacs=({emacs:?}) Wasm=({wasm:?}).",
property = "begin",
emacs = standard_properties.begin,
wasm = Some(wasm.begin),
)
.into(),
));
}
if Some(wasm.end) != standard_properties.end {
layer.status.push(WasmDiffStatus::Bad(
format!(
"Property mismatch. Property=({property}) Emacs=({emacs:?}) Wasm=({wasm:?}).",
property = "end",
emacs = standard_properties.end,
wasm = Some(wasm.end),
)
.into(),
));
}
if wasm.contents_begin != standard_properties.contents_begin {
layer.status.push(WasmDiffStatus::Bad(
format!(
"Property mismatch. Property=({property}) Emacs=({emacs:?}) Wasm=({wasm:?}).",
property = "contents-begin",
emacs = standard_properties.contents_begin,
wasm = wasm.contents_begin,
)
.into(),
));
}
if wasm.contents_end != standard_properties.contents_end {
layer.status.push(WasmDiffStatus::Bad(
format!(
"Property mismatch. Property=({property}) Emacs=({emacs:?}) Wasm=({wasm:?}).",
property = "contents-end",
emacs = standard_properties.contents_end,
wasm = wasm.contents_end,
)
.into(),
));
}
if Some(wasm.post_blank).map(|post_blank| post_blank as usize) != standard_properties.post_blank
{
layer.status.push(WasmDiffStatus::Bad(
format!(
"Property mismatch. Property=({property}) Emacs=({emacs:?}) Wasm=({wasm:?}).",
property = "post-blank",
emacs = standard_properties.post_blank,
wasm = Some(wasm.post_blank),
)
.into(),
));
}
result.children.push(layer);
Ok(result)
}
pub(crate) fn wasm_compare_additional_properties<'b, 's>(
source: &'s str,
emacs: &'b Token<'s>,
wasm: &AdditionalProperties<'_, '_>,
) -> Result<WasmDiffResult<'s>, Box<dyn std::error::Error>> {
let mut result = WasmDiffResult::default();
let mut layer = WasmDiffResult::default();
layer.name = "additional-properties".into();
for (property_name, property_value) in wasm.properties.iter() {
let emacs_property_name = format!(":{property_name}", property_name = property_name);
match property_value {
AdditionalPropertyValue::SingleString(wasm_value) => {
layer.extend(wasm_compare_property_quoted_string(
source,
emacs,
wasm,
&emacs_property_name,
|_| Some(wasm_value),
)?)?;
}
AdditionalPropertyValue::ListOfStrings(wasm_value) => {
layer.extend(wasm_compare_property_list_of_quoted_string(
source,
emacs,
wasm,
&emacs_property_name,
|_| Some(wasm_value.iter()),
)?)?;
}
// TODO: similar to compare_affiliated_keywords
AdditionalPropertyValue::OptionalPair { optval, val } => {
layer.extend(wasm_compare_property_optional_pair(
source,
emacs,
wasm,
&emacs_property_name,
|_| Some((*optval, *val)),
)?)?;
}
AdditionalPropertyValue::ObjectTree(_) => todo!(),
}
}
result.children.push(layer);
Ok(result)
}

View File

@ -1,7 +1,5 @@
mod compare;
mod diff;
mod elisp_compare;
mod logic;
mod macros;
mod runner;

View File

@ -47,7 +47,7 @@ pub async fn wasm_run_anonymous_compare_with_settings<'g, 's, P: AsRef<str>>(
}
// We do the diffing after printing out both parsed forms in case the diffing panics
let diff_result = wasm_compare_document(org_contents, &parsed_sexp, wasm_parsed)?;
let diff_result = wasm_compare_document(org_contents, &parsed_sexp, &wasm_parsed)?;
if !silent {
diff_result.print(org_contents)?;
}
@ -112,7 +112,7 @@ pub async fn wasm_run_compare_on_file_with_settings<'g, 's, P: AsRef<Path>>(
}
// We do the diffing after printing out both parsed forms in case the diffing panics
let diff_result = wasm_compare_document(org_contents, &parsed_sexp, wasm_parsed)?;
let diff_result = wasm_compare_document(org_contents, &parsed_sexp, &wasm_parsed)?;
if !silent {
diff_result.print(org_contents)?;
}