Just barely starting to diff the two parsed forms.
This commit is contained in:
25
src/compare/diff.rs
Normal file
25
src/compare/diff.rs
Normal file
@@ -0,0 +1,25 @@
|
||||
use super::sexp::Token;
|
||||
use crate::parser::Document;
|
||||
|
||||
pub fn compare_document<'s>(
|
||||
emacs: &'s Token<'s>,
|
||||
rust: &'s Document<'s>,
|
||||
) -> Result<(), Box<dyn std::error::Error>> {
|
||||
compare_document_indented(0, emacs, rust)
|
||||
}
|
||||
|
||||
fn compare_document_indented<'s>(
|
||||
indentation: usize,
|
||||
emacs: &'s Token<'s>,
|
||||
rust: &'s Document<'s>,
|
||||
) -> Result<(), Box<dyn std::error::Error>> {
|
||||
let children = emacs.as_list()?;
|
||||
let first_child = children.first().ok_or("Should have at least one child")?;
|
||||
let first_child_text = first_child.as_atom()?;
|
||||
if first_child_text != "org-data" {
|
||||
return Err("Document should correspond to an org-data cell.".into());
|
||||
}
|
||||
// TODO: compare the children
|
||||
|
||||
Ok(())
|
||||
}
|
||||
Reference in New Issue
Block a user