diff --git a/src/wasm/mod.rs b/src/wasm/mod.rs index 1046b44..2ffa5ac 100644 --- a/src/wasm/mod.rs +++ b/src/wasm/mod.rs @@ -64,6 +64,8 @@ mod verse_block; pub use ast_node::WasmAstNode; pub use document::WasmDocument; +pub(crate) use headline::WasmHeadline; pub use parse_result::ParseResult; +pub(crate) use section::WasmSection; pub use to_wasm::ToWasm; pub use to_wasm::ToWasmContext; diff --git a/src/wasm_test/compare.rs b/src/wasm_test/compare.rs index 1fef340..0803a3f 100644 --- a/src/wasm_test/compare.rs +++ b/src/wasm_test/compare.rs @@ -7,6 +7,8 @@ use crate::compare::EmacsField; use crate::compare::Token; use crate::wasm::WasmAstNode; use crate::wasm::WasmDocument; +use crate::wasm::WasmHeadline; +use crate::wasm::WasmSection; use crate::wasm_test::macros::wasm_compare; pub fn wasm_compare_document<'b, 's, 'p>( @@ -172,8 +174,8 @@ impl<'s, 'p> WasmElispCompare<'s, 'p> for WasmAstNode<'s, 'p> { ) -> Result, Box> { match self { WasmAstNode::Document(inner) => inner.compare_ast_node(source, emacs), - WasmAstNode::Headline(_) => todo!(), - WasmAstNode::Section(_) => todo!(), + WasmAstNode::Headline(inner) => inner.compare_ast_node(source, emacs), + WasmAstNode::Section(inner) => inner.compare_ast_node(source, emacs), WasmAstNode::Paragraph(_) => todo!(), WasmAstNode::PlainList(_) => todo!(), WasmAstNode::PlainListItem(_) => todo!(), @@ -258,6 +260,60 @@ impl<'s, 'p> WasmElispCompare<'s, 'p> for WasmDocument<'s, 'p> { } } +impl<'s, 'p> WasmElispCompare<'s, 'p> for WasmHeadline<'s, 'p> { + fn compare_ast_node<'b>( + &self, + 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 + // ) + // ); + + Ok(result) + } +} + +impl<'s, 'p> WasmElispCompare<'s, 'p> for WasmSection<'s, 'p> { + fn compare_ast_node<'b>( + &self, + 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 + // ) + // ); + + Ok(result) + } +} + fn wasm_compare_property_quoted_string< 'b, 's, diff --git a/src/wasm_test/macros.rs b/src/wasm_test/macros.rs index e1b43a8..68ab7e4 100644 --- a/src/wasm_test/macros.rs +++ b/src/wasm_test/macros.rs @@ -41,11 +41,11 @@ macro_rules! wasm_compare { { // Compare children. - // result.extend(wasm_compare_list( - // $source, - // emacs_list_iter, - // $wasm.children.iter(), - // )?)?; + result.extend(wasm_compare_list( + $source, + emacs_list_iter, + $wasm.children.iter(), + )?)?; } {