Wrap the components of headlines in diff layers.
This commit is contained in:
parent
2c5c26c55f
commit
d471f7178b
@ -524,23 +524,31 @@ fn compare_heading<'s>(
|
||||
|
||||
// Compare title
|
||||
let title = get_property(emacs, ":title")?.ok_or("Missing :title attribute.")?;
|
||||
for (emacs_child, rust_child) in title.as_list()?.iter().zip(rust.title.iter()) {
|
||||
child_status.push(compare_object(source, emacs_child, rust_child)?);
|
||||
}
|
||||
let title_status = title
|
||||
.as_list()?
|
||||
.iter()
|
||||
.zip(rust.title.iter())
|
||||
.map(|(emacs_child, rust_child)| compare_object(source, emacs_child, rust_child))
|
||||
.collect::<Result<Vec<_>, _>>()?;
|
||||
child_status.push(artificial_diff_scope("title".to_owned(), title_status)?);
|
||||
|
||||
// TODO: Compare todo-type, priority, :footnote-section-p, :archivedp, :commentedp
|
||||
|
||||
// Compare section
|
||||
for (emacs_child, rust_child) in children.iter().skip(2).zip(rust.children.iter()) {
|
||||
match rust_child {
|
||||
let section_status = children
|
||||
.iter()
|
||||
.skip(2)
|
||||
.zip(rust.children.iter())
|
||||
.map(|(emacs_child, rust_child)| match rust_child {
|
||||
DocumentElement::Heading(rust_heading) => {
|
||||
child_status.push(compare_heading(source, emacs_child, rust_heading)?);
|
||||
compare_heading(source, emacs_child, rust_heading)
|
||||
}
|
||||
DocumentElement::Section(rust_section) => {
|
||||
child_status.push(compare_section(source, emacs_child, rust_section)?);
|
||||
compare_section(source, emacs_child, rust_section)
|
||||
}
|
||||
};
|
||||
}
|
||||
})
|
||||
.collect::<Result<Vec<_>, _>>()?;
|
||||
child_status.push(artificial_diff_scope("section".to_owned(), section_status)?);
|
||||
|
||||
Ok(DiffResult {
|
||||
status: this_status,
|
||||
|
Loading…
x
Reference in New Issue
Block a user