Enable child checking.

This commit is contained in:
Tom Alexander 2023-12-27 16:47:02 -05:00
parent 423f65046e
commit 58290515b5
Signed by: talexander
GPG Key ID: D3A179C9A53C0EDE
3 changed files with 65 additions and 7 deletions

View File

@ -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;

View File

@ -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<WasmDiffResult<'s>, Box<dyn std::error::Error>> {
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<WasmDiffResult<'s>, Box<dyn std::error::Error>> {
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<WasmDiffResult<'s>, Box<dyn std::error::Error>> {
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,

View File

@ -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(),
)?)?;
}
{