Implement a new compare_properties implementation of the heading comparison.
This commit is contained in:
@@ -12,6 +12,7 @@ use super::compare_field::compare_property_list_of_ast_nodes;
|
||||
use super::compare_field::compare_property_list_of_quoted_string;
|
||||
use super::compare_field::compare_property_numeric;
|
||||
use super::compare_field::compare_property_quoted_string;
|
||||
use super::compare_field::compare_property_single_ast_node;
|
||||
use super::compare_field::compare_property_unquoted_atom;
|
||||
use super::elisp_fact::ElispFact;
|
||||
use super::elisp_fact::GetElispFact;
|
||||
@@ -621,6 +622,86 @@ fn new_compare_heading<'b, 's>(
|
||||
EmacsField::Required(":level"),
|
||||
|r| Some(r.level),
|
||||
compare_property_numeric
|
||||
),
|
||||
(
|
||||
EmacsField::Required(":tags"),
|
||||
|r| if r.tags.is_empty() {
|
||||
None
|
||||
} else {
|
||||
Some(r.tags.iter())
|
||||
},
|
||||
compare_property_list_of_quoted_string
|
||||
),
|
||||
(
|
||||
EmacsField::Required(":todo-keyword"),
|
||||
|r| r.todo_keyword.as_ref().map(|(_, text)| text),
|
||||
compare_property_quoted_string
|
||||
),
|
||||
(
|
||||
EmacsField::Required(":todo-type"),
|
||||
|r| r
|
||||
.todo_keyword
|
||||
.as_ref()
|
||||
.map(|(todo_type, _)| todo_type)
|
||||
.map(|todo_type| match todo_type {
|
||||
TodoKeywordType::Todo => "todo",
|
||||
TodoKeywordType::Done => "done",
|
||||
}),
|
||||
compare_property_unquoted_atom
|
||||
),
|
||||
(
|
||||
EmacsField::Required(":title"),
|
||||
|r| if r.title.is_empty() {
|
||||
None
|
||||
} else {
|
||||
Some(r.title.iter())
|
||||
},
|
||||
compare_property_list_of_ast_nodes
|
||||
),
|
||||
(
|
||||
EmacsField::Required(":priority"),
|
||||
|r| r.priority_cookie,
|
||||
compare_property_numeric
|
||||
),
|
||||
(
|
||||
EmacsField::Required(":archivedp"),
|
||||
|r| r.is_archived,
|
||||
compare_property_boolean
|
||||
),
|
||||
(
|
||||
EmacsField::Required(":commentedp"),
|
||||
|r| r.is_comment,
|
||||
compare_property_boolean
|
||||
),
|
||||
(
|
||||
EmacsField::Required(":raw-value"),
|
||||
|r| Some(r.get_raw_value()),
|
||||
compare_property_quoted_string
|
||||
),
|
||||
(
|
||||
EmacsField::Required(":footnote-section-p"),
|
||||
|r| r.is_footnote_section,
|
||||
compare_property_boolean
|
||||
),
|
||||
(
|
||||
EmacsField::Required(":scheduled"),
|
||||
|r| r.scheduled.as_ref(),
|
||||
compare_property_single_ast_node
|
||||
),
|
||||
(
|
||||
EmacsField::Required(":deadline"),
|
||||
|r| r.deadline.as_ref(),
|
||||
compare_property_single_ast_node
|
||||
),
|
||||
(
|
||||
EmacsField::Required(":closed"),
|
||||
|r| r.closed.as_ref(),
|
||||
compare_property_single_ast_node
|
||||
),
|
||||
(
|
||||
EmacsField::Required(":pre-blank"),
|
||||
compare_identity,
|
||||
compare_noop
|
||||
)
|
||||
) {
|
||||
match diff {
|
||||
|
||||
Reference in New Issue
Block a user