Starting the wasm_compare macro.
This commit is contained in:
@@ -1,9 +1,12 @@
|
||||
use std::borrow::Cow;
|
||||
|
||||
use super::elisp_compare::WasmElispCompare;
|
||||
use crate::compare::ElispFact;
|
||||
use crate::compare::EmacsField;
|
||||
use crate::compare::Token;
|
||||
use crate::wasm::WasmAstNode;
|
||||
use crate::wasm::WasmDocument;
|
||||
use crate::wasm_test::macros::wasm_compare;
|
||||
|
||||
pub fn wasm_compare_document<'b, 's, 'p>(
|
||||
source: &'s str,
|
||||
@@ -54,6 +57,7 @@ impl<'s> WasmDiffResult<'s> {
|
||||
|
||||
pub fn print(&self, original_document: &str) -> Result<(), Box<dyn std::error::Error>> {
|
||||
// self.print_indented(0, original_document)
|
||||
println!("{:#?}", self);
|
||||
todo!()
|
||||
}
|
||||
}
|
||||
@@ -165,7 +169,66 @@ impl<'s, 'p> WasmElispCompare<'s, 'p> for WasmAstNode<'s, 'p> {
|
||||
source: &'s str,
|
||||
emacs: &'b Token<'s>,
|
||||
) -> Result<WasmDiffResult<'s>, Box<dyn std::error::Error>> {
|
||||
todo!()
|
||||
match self {
|
||||
WasmAstNode::Document(inner) => inner.compare_ast_node(source, emacs),
|
||||
WasmAstNode::Headline(_) => todo!(),
|
||||
WasmAstNode::Section(_) => todo!(),
|
||||
WasmAstNode::Paragraph(_) => todo!(),
|
||||
WasmAstNode::PlainList(_) => todo!(),
|
||||
WasmAstNode::PlainListItem(_) => todo!(),
|
||||
WasmAstNode::CenterBlock(_) => todo!(),
|
||||
WasmAstNode::QuoteBlock(_) => todo!(),
|
||||
WasmAstNode::SpecialBlock(_) => todo!(),
|
||||
WasmAstNode::DynamicBlock(_) => todo!(),
|
||||
WasmAstNode::FootnoteDefinition(_) => todo!(),
|
||||
WasmAstNode::Comment(_) => todo!(),
|
||||
WasmAstNode::Drawer(_) => todo!(),
|
||||
WasmAstNode::PropertyDrawer(_) => todo!(),
|
||||
WasmAstNode::NodeProperty(_) => todo!(),
|
||||
WasmAstNode::Table(_) => todo!(),
|
||||
WasmAstNode::TableRow(_) => todo!(),
|
||||
WasmAstNode::VerseBlock(_) => todo!(),
|
||||
WasmAstNode::CommentBlock(_) => todo!(),
|
||||
WasmAstNode::ExampleBlock(_) => todo!(),
|
||||
WasmAstNode::ExportBlock(_) => todo!(),
|
||||
WasmAstNode::SrcBlock(_) => todo!(),
|
||||
WasmAstNode::Clock(_) => todo!(),
|
||||
WasmAstNode::DiarySexp(_) => todo!(),
|
||||
WasmAstNode::Planning(_) => todo!(),
|
||||
WasmAstNode::FixedWidthArea(_) => todo!(),
|
||||
WasmAstNode::HorizontalRule(_) => todo!(),
|
||||
WasmAstNode::Keyword(_) => todo!(),
|
||||
WasmAstNode::BabelCall(_) => todo!(),
|
||||
WasmAstNode::LatexEnvironment(_) => todo!(),
|
||||
WasmAstNode::Bold(_) => todo!(),
|
||||
WasmAstNode::Italic(_) => todo!(),
|
||||
WasmAstNode::Underline(_) => todo!(),
|
||||
WasmAstNode::StrikeThrough(_) => todo!(),
|
||||
WasmAstNode::Code(_) => todo!(),
|
||||
WasmAstNode::Verbatim(_) => todo!(),
|
||||
WasmAstNode::PlainText(_) => todo!(),
|
||||
WasmAstNode::RegularLink(_) => todo!(),
|
||||
WasmAstNode::RadioLink(_) => todo!(),
|
||||
WasmAstNode::RadioTarget(_) => todo!(),
|
||||
WasmAstNode::PlainLink(_) => todo!(),
|
||||
WasmAstNode::AngleLink(_) => todo!(),
|
||||
WasmAstNode::OrgMacro(_) => todo!(),
|
||||
WasmAstNode::Entity(_) => todo!(),
|
||||
WasmAstNode::LatexFragment(_) => todo!(),
|
||||
WasmAstNode::ExportSnippet(_) => todo!(),
|
||||
WasmAstNode::FootnoteReference(_) => todo!(),
|
||||
WasmAstNode::Citation(_) => todo!(),
|
||||
WasmAstNode::CitationReference(_) => todo!(),
|
||||
WasmAstNode::InlineBabelCall(_) => todo!(),
|
||||
WasmAstNode::InlineSourceBlock(_) => todo!(),
|
||||
WasmAstNode::LineBreak(_) => todo!(),
|
||||
WasmAstNode::Target(_) => todo!(),
|
||||
WasmAstNode::StatisticsCookie(_) => todo!(),
|
||||
WasmAstNode::Subscript(_) => todo!(),
|
||||
WasmAstNode::Superscript(_) => todo!(),
|
||||
WasmAstNode::TableCell(_) => todo!(),
|
||||
WasmAstNode::Timestamp(_) => todo!(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -175,10 +238,17 @@ impl<'s, 'p> WasmElispCompare<'s, 'p> for WasmDocument<'s, 'p> {
|
||||
source: &'s str,
|
||||
emacs: &'b Token<'s>,
|
||||
) -> Result<WasmDiffResult<'s>, Box<dyn std::error::Error>> {
|
||||
let mut result = WasmDiffResult::default();
|
||||
let emacs_children = emacs.as_list()?.iter().skip(2);
|
||||
let wasm_children = self.children.iter();
|
||||
result.extend(wasm_compare_list(source, emacs_children, wasm_children)?)?;
|
||||
todo!()
|
||||
let result = wasm_compare!(
|
||||
source,
|
||||
emacs,
|
||||
self,
|
||||
(
|
||||
EmacsField::Required(":path"),
|
||||
|w| w.path.as_ref().and_then(|p| p.to_str()),
|
||||
|| true
|
||||
)
|
||||
);
|
||||
// todo: compare the rest
|
||||
Ok(result)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user