From abfae9c6c0fd8d3494d4c663fe445c20c8ef4479 Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Wed, 27 Dec 2023 19:10:43 -0500 Subject: [PATCH] Compare section. --- src/wasm/babel_call.rs | 6 +++ src/wasm/center_block.rs | 6 +++ src/wasm/clock.rs | 6 +++ src/wasm/comment.rs | 6 +++ src/wasm/comment_block.rs | 6 +++ src/wasm/diary_sexp.rs | 6 +++ src/wasm/drawer.rs | 6 +++ src/wasm/dynamic_block.rs | 6 +++ src/wasm/example_block.rs | 6 +++ src/wasm/export_block.rs | 6 +++ src/wasm/fixed_width_area.rs | 6 +++ src/wasm/footnote_definition.rs | 6 +++ src/wasm/horizontal_rule.rs | 6 +++ src/wasm/keyword.rs | 6 +++ src/wasm/latex_environment.rs | 6 +++ src/wasm/paragraph.rs | 6 +++ src/wasm/plain_list.rs | 6 +++ src/wasm/planning.rs | 6 +++ src/wasm/property_drawer.rs | 6 +++ src/wasm/quote_block.rs | 6 +++ src/wasm/section.rs | 28 ++++++++++++-- src/wasm/special_block.rs | 6 +++ src/wasm/src_block.rs | 6 +++ src/wasm/table.rs | 6 +++ src/wasm/to_wasm.rs | 65 +++++++++++++++++++++++++++++++++ src/wasm/verse_block.rs | 6 +++ src/wasm_test/compare.rs | 17 +-------- 27 files changed, 235 insertions(+), 19 deletions(-) diff --git a/src/wasm/babel_call.rs b/src/wasm/babel_call.rs index 071e0d54..e88cea73 100644 --- a/src/wasm/babel_call.rs +++ b/src/wasm/babel_call.rs @@ -28,3 +28,9 @@ to_wasm!( }) } ); + +impl<'s, 'p> Into> for WasmBabelCall<'s, 'p> { + fn into(self) -> WasmAstNode<'s, 'p> { + WasmAstNode::BabelCall(self) + } +} diff --git a/src/wasm/center_block.rs b/src/wasm/center_block.rs index f77e7996..3f9c80ff 100644 --- a/src/wasm/center_block.rs +++ b/src/wasm/center_block.rs @@ -28,3 +28,9 @@ to_wasm!( }) } ); + +impl<'s, 'p> Into> for WasmCenterBlock<'s, 'p> { + fn into(self) -> WasmAstNode<'s, 'p> { + WasmAstNode::CenterBlock(self) + } +} diff --git a/src/wasm/clock.rs b/src/wasm/clock.rs index 1170747a..d0cbae9c 100644 --- a/src/wasm/clock.rs +++ b/src/wasm/clock.rs @@ -28,3 +28,9 @@ to_wasm!( }) } ); + +impl<'s, 'p> Into> for WasmClock<'s, 'p> { + fn into(self) -> WasmAstNode<'s, 'p> { + WasmAstNode::Clock(self) + } +} diff --git a/src/wasm/comment.rs b/src/wasm/comment.rs index 9c69a909..029f6b15 100644 --- a/src/wasm/comment.rs +++ b/src/wasm/comment.rs @@ -28,3 +28,9 @@ to_wasm!( }) } ); + +impl<'s, 'p> Into> for WasmComment<'s, 'p> { + fn into(self) -> WasmAstNode<'s, 'p> { + WasmAstNode::Comment(self) + } +} diff --git a/src/wasm/comment_block.rs b/src/wasm/comment_block.rs index 430e460d..7a51e718 100644 --- a/src/wasm/comment_block.rs +++ b/src/wasm/comment_block.rs @@ -28,3 +28,9 @@ to_wasm!( }) } ); + +impl<'s, 'p> Into> for WasmCommentBlock<'s, 'p> { + fn into(self) -> WasmAstNode<'s, 'p> { + WasmAstNode::CommentBlock(self) + } +} diff --git a/src/wasm/diary_sexp.rs b/src/wasm/diary_sexp.rs index 0c0dffb6..f96e5aba 100644 --- a/src/wasm/diary_sexp.rs +++ b/src/wasm/diary_sexp.rs @@ -28,3 +28,9 @@ to_wasm!( }) } ); + +impl<'s, 'p> Into> for WasmDiarySexp<'s, 'p> { + fn into(self) -> WasmAstNode<'s, 'p> { + WasmAstNode::DiarySexp(self) + } +} diff --git a/src/wasm/drawer.rs b/src/wasm/drawer.rs index 7fe3ee24..2375a2b2 100644 --- a/src/wasm/drawer.rs +++ b/src/wasm/drawer.rs @@ -28,3 +28,9 @@ to_wasm!( }) } ); + +impl<'s, 'p> Into> for WasmDrawer<'s, 'p> { + fn into(self) -> WasmAstNode<'s, 'p> { + WasmAstNode::Drawer(self) + } +} diff --git a/src/wasm/dynamic_block.rs b/src/wasm/dynamic_block.rs index 7947ed65..9508a510 100644 --- a/src/wasm/dynamic_block.rs +++ b/src/wasm/dynamic_block.rs @@ -28,3 +28,9 @@ to_wasm!( }) } ); + +impl<'s, 'p> Into> for WasmDynamicBlock<'s, 'p> { + fn into(self) -> WasmAstNode<'s, 'p> { + WasmAstNode::DynamicBlock(self) + } +} diff --git a/src/wasm/example_block.rs b/src/wasm/example_block.rs index 4cd403ce..7537c568 100644 --- a/src/wasm/example_block.rs +++ b/src/wasm/example_block.rs @@ -28,3 +28,9 @@ to_wasm!( }) } ); + +impl<'s, 'p> Into> for WasmExampleBlock<'s, 'p> { + fn into(self) -> WasmAstNode<'s, 'p> { + WasmAstNode::ExampleBlock(self) + } +} diff --git a/src/wasm/export_block.rs b/src/wasm/export_block.rs index 0cb9d6d0..5eb3f20d 100644 --- a/src/wasm/export_block.rs +++ b/src/wasm/export_block.rs @@ -28,3 +28,9 @@ to_wasm!( }) } ); + +impl<'s, 'p> Into> for WasmExportBlock<'s, 'p> { + fn into(self) -> WasmAstNode<'s, 'p> { + WasmAstNode::ExportBlock(self) + } +} diff --git a/src/wasm/fixed_width_area.rs b/src/wasm/fixed_width_area.rs index d67db36a..b21178ff 100644 --- a/src/wasm/fixed_width_area.rs +++ b/src/wasm/fixed_width_area.rs @@ -28,3 +28,9 @@ to_wasm!( }) } ); + +impl<'s, 'p> Into> for WasmFixedWidthArea<'s, 'p> { + fn into(self) -> WasmAstNode<'s, 'p> { + WasmAstNode::FixedWidthArea(self) + } +} diff --git a/src/wasm/footnote_definition.rs b/src/wasm/footnote_definition.rs index 84ba5d96..b48cd5af 100644 --- a/src/wasm/footnote_definition.rs +++ b/src/wasm/footnote_definition.rs @@ -28,3 +28,9 @@ to_wasm!( }) } ); + +impl<'s, 'p> Into> for WasmFootnoteDefinition<'s, 'p> { + fn into(self) -> WasmAstNode<'s, 'p> { + WasmAstNode::FootnoteDefinition(self) + } +} diff --git a/src/wasm/horizontal_rule.rs b/src/wasm/horizontal_rule.rs index f16866d7..9ea6a1d2 100644 --- a/src/wasm/horizontal_rule.rs +++ b/src/wasm/horizontal_rule.rs @@ -28,3 +28,9 @@ to_wasm!( }) } ); + +impl<'s, 'p> Into> for WasmHorizontalRule<'s, 'p> { + fn into(self) -> WasmAstNode<'s, 'p> { + WasmAstNode::HorizontalRule(self) + } +} diff --git a/src/wasm/keyword.rs b/src/wasm/keyword.rs index 60025055..fc8431ef 100644 --- a/src/wasm/keyword.rs +++ b/src/wasm/keyword.rs @@ -28,3 +28,9 @@ to_wasm!( }) } ); + +impl<'s, 'p> Into> for WasmKeyword<'s, 'p> { + fn into(self) -> WasmAstNode<'s, 'p> { + WasmAstNode::Keyword(self) + } +} diff --git a/src/wasm/latex_environment.rs b/src/wasm/latex_environment.rs index 239de21d..92097260 100644 --- a/src/wasm/latex_environment.rs +++ b/src/wasm/latex_environment.rs @@ -28,3 +28,9 @@ to_wasm!( }) } ); + +impl<'s, 'p> Into> for WasmLatexEnvironment<'s, 'p> { + fn into(self) -> WasmAstNode<'s, 'p> { + WasmAstNode::LatexEnvironment(self) + } +} diff --git a/src/wasm/paragraph.rs b/src/wasm/paragraph.rs index bd139f6b..809550bb 100644 --- a/src/wasm/paragraph.rs +++ b/src/wasm/paragraph.rs @@ -28,3 +28,9 @@ to_wasm!( }) } ); + +impl<'s, 'p> Into> for WasmParagraph<'s, 'p> { + fn into(self) -> WasmAstNode<'s, 'p> { + WasmAstNode::Paragraph(self) + } +} diff --git a/src/wasm/plain_list.rs b/src/wasm/plain_list.rs index 89eed372..df8ada2a 100644 --- a/src/wasm/plain_list.rs +++ b/src/wasm/plain_list.rs @@ -28,3 +28,9 @@ to_wasm!( }) } ); + +impl<'s, 'p> Into> for WasmPlainList<'s, 'p> { + fn into(self) -> WasmAstNode<'s, 'p> { + WasmAstNode::PlainList(self) + } +} diff --git a/src/wasm/planning.rs b/src/wasm/planning.rs index 3a3f325f..c921717f 100644 --- a/src/wasm/planning.rs +++ b/src/wasm/planning.rs @@ -28,3 +28,9 @@ to_wasm!( }) } ); + +impl<'s, 'p> Into> for WasmPlanning<'s, 'p> { + fn into(self) -> WasmAstNode<'s, 'p> { + WasmAstNode::Planning(self) + } +} diff --git a/src/wasm/property_drawer.rs b/src/wasm/property_drawer.rs index 76557627..a02e06d6 100644 --- a/src/wasm/property_drawer.rs +++ b/src/wasm/property_drawer.rs @@ -28,3 +28,9 @@ to_wasm!( }) } ); + +impl<'s, 'p> Into> for WasmPropertyDrawer<'s, 'p> { + fn into(self) -> WasmAstNode<'s, 'p> { + WasmAstNode::PropertyDrawer(self) + } +} diff --git a/src/wasm/quote_block.rs b/src/wasm/quote_block.rs index 24a19f9b..e1f89ed0 100644 --- a/src/wasm/quote_block.rs +++ b/src/wasm/quote_block.rs @@ -28,3 +28,9 @@ to_wasm!( }) } ); + +impl<'s, 'p> Into> for WasmQuoteBlock<'s, 'p> { + fn into(self) -> WasmAstNode<'s, 'p> { + WasmAstNode::QuoteBlock(self) + } +} diff --git a/src/wasm/section.rs b/src/wasm/section.rs index 3e9e8d8f..44620f54 100644 --- a/src/wasm/section.rs +++ b/src/wasm/section.rs @@ -4,6 +4,9 @@ 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; @@ -11,8 +14,9 @@ use crate::wasm::to_wasm::ToWasmStandardProperties; #[serde(tag = "ast_node")] #[serde(rename = "section")] pub struct WasmSection<'s, 'p> { - standard_properties: WasmStandardProperties, - children: Vec>, + pub(crate) standard_properties: WasmStandardProperties, + pub(crate) additional_properties: AdditionalProperties<'s, 'p>, + pub(crate) children: Vec>, } to_wasm!( @@ -22,9 +26,20 @@ to_wasm!( wasm_context, standard_properties, { + let children = original + .children + .iter() + .map(|child| { + child + .to_wasm(wasm_context.clone()) + .map(Into::>::into) + }) + .collect::, _>>()?; + Ok(WasmSection { standard_properties, - children: Vec::new(), + additional_properties: AdditionalProperties::default(), + children, }) } ); @@ -34,3 +49,10 @@ impl<'s, 'p> Into> for WasmSection<'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() + } +} diff --git a/src/wasm/special_block.rs b/src/wasm/special_block.rs index 124c1078..7617268d 100644 --- a/src/wasm/special_block.rs +++ b/src/wasm/special_block.rs @@ -28,3 +28,9 @@ to_wasm!( }) } ); + +impl<'s, 'p> Into> for WasmSpecialBlock<'s, 'p> { + fn into(self) -> WasmAstNode<'s, 'p> { + WasmAstNode::SpecialBlock(self) + } +} diff --git a/src/wasm/src_block.rs b/src/wasm/src_block.rs index a8d8a53c..67ff1a4a 100644 --- a/src/wasm/src_block.rs +++ b/src/wasm/src_block.rs @@ -28,3 +28,9 @@ to_wasm!( }) } ); + +impl<'s, 'p> Into> for WasmSrcBlock<'s, 'p> { + fn into(self) -> WasmAstNode<'s, 'p> { + WasmAstNode::SrcBlock(self) + } +} diff --git a/src/wasm/table.rs b/src/wasm/table.rs index 4ce91350..455bc769 100644 --- a/src/wasm/table.rs +++ b/src/wasm/table.rs @@ -28,3 +28,9 @@ to_wasm!( }) } ); + +impl<'s, 'p> Into> for WasmTable<'s, 'p> { + fn into(self) -> WasmAstNode<'s, 'p> { + WasmAstNode::Table(self) + } +} diff --git a/src/wasm/to_wasm.rs b/src/wasm/to_wasm.rs index 9e5dc0db..5f483741 100644 --- a/src/wasm/to_wasm.rs +++ b/src/wasm/to_wasm.rs @@ -1,4 +1,7 @@ +use super::macros::to_wasm; +use super::WasmAstNode; use crate::error::CustomError; +use crate::types::Element; pub trait ToWasm<'p> { type Output; @@ -25,3 +28,65 @@ impl<'s> ToWasmContext<'s> { ToWasmContext { full_document } } } + +to_wasm!( + WasmAstNode<'s, 'p>, + Element<'s>, + original, + wasm_context, + standard_properties, + { + match original { + Element::Paragraph(inner) => inner.to_wasm(wasm_context).map(Into::::into), + Element::PlainList(inner) => inner.to_wasm(wasm_context).map(Into::::into), + Element::CenterBlock(inner) => { + inner.to_wasm(wasm_context).map(Into::::into) + } + Element::QuoteBlock(inner) => { + inner.to_wasm(wasm_context).map(Into::::into) + } + Element::SpecialBlock(inner) => { + inner.to_wasm(wasm_context).map(Into::::into) + } + Element::DynamicBlock(inner) => { + inner.to_wasm(wasm_context).map(Into::::into) + } + Element::FootnoteDefinition(inner) => { + inner.to_wasm(wasm_context).map(Into::::into) + } + Element::Comment(inner) => inner.to_wasm(wasm_context).map(Into::::into), + Element::Drawer(inner) => inner.to_wasm(wasm_context).map(Into::::into), + Element::PropertyDrawer(inner) => { + inner.to_wasm(wasm_context).map(Into::::into) + } + Element::Table(inner) => inner.to_wasm(wasm_context).map(Into::::into), + Element::VerseBlock(inner) => { + inner.to_wasm(wasm_context).map(Into::::into) + } + Element::CommentBlock(inner) => { + inner.to_wasm(wasm_context).map(Into::::into) + } + Element::ExampleBlock(inner) => { + inner.to_wasm(wasm_context).map(Into::::into) + } + Element::ExportBlock(inner) => { + inner.to_wasm(wasm_context).map(Into::::into) + } + Element::SrcBlock(inner) => inner.to_wasm(wasm_context).map(Into::::into), + Element::Clock(inner) => inner.to_wasm(wasm_context).map(Into::::into), + Element::DiarySexp(inner) => inner.to_wasm(wasm_context).map(Into::::into), + Element::Planning(inner) => inner.to_wasm(wasm_context).map(Into::::into), + Element::FixedWidthArea(inner) => { + inner.to_wasm(wasm_context).map(Into::::into) + } + Element::HorizontalRule(inner) => { + inner.to_wasm(wasm_context).map(Into::::into) + } + Element::Keyword(inner) => inner.to_wasm(wasm_context).map(Into::::into), + Element::BabelCall(inner) => inner.to_wasm(wasm_context).map(Into::::into), + Element::LatexEnvironment(inner) => { + inner.to_wasm(wasm_context).map(Into::::into) + } + } + } +); diff --git a/src/wasm/verse_block.rs b/src/wasm/verse_block.rs index 7314361f..8693b6ce 100644 --- a/src/wasm/verse_block.rs +++ b/src/wasm/verse_block.rs @@ -28,3 +28,9 @@ to_wasm!( }) } ); + +impl<'s, 'p> Into> for WasmVerseBlock<'s, 'p> { + fn into(self) -> WasmAstNode<'s, 'p> { + WasmAstNode::VerseBlock(self) + } +} diff --git a/src/wasm_test/compare.rs b/src/wasm_test/compare.rs index 01c2090e..fb5a7719 100644 --- a/src/wasm_test/compare.rs +++ b/src/wasm_test/compare.rs @@ -307,22 +307,7 @@ impl<'s, 'p> WasmElispCompare<'s, 'p> for WasmSection<'s, 'p> { source: &'s str, emacs: &'b Token<'s>, ) -> Result, Box> { - let result = WasmDiffResult::default(); - // let result = wasm_compare!( - // source, - // emacs, - // self, - // ( - // EmacsField::Required(":path"), - // |w| w.path.as_ref().and_then(|p| p.to_str()), - // wasm_compare_property_quoted_string - // ), - // ( - // EmacsField::Required(":CATEGORY"), - // |w| w.category.as_ref(), - // wasm_compare_property_quoted_string - // ) - // ); + let result = wasm_compare!(source, emacs, self,); Ok(result) }