Just barely starting to diff the two parsed forms.

This commit is contained in:
Tom Alexander
2023-04-11 17:35:09 -04:00
parent 5305ae7627
commit 287cc8dea3
5 changed files with 54 additions and 2 deletions

25
src/compare/diff.rs Normal file
View 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(())
}