Compare plain list item pre blank.
This commit is contained in:
parent
7727b5ef47
commit
064a4eeee7
@ -53,6 +53,7 @@ use crate::types::PlainLink;
|
||||
use crate::types::PlainList;
|
||||
use crate::types::PlainListItem;
|
||||
use crate::types::PlainListItemCounter;
|
||||
use crate::types::PlainListItemPreBlank;
|
||||
use crate::types::PlainListType;
|
||||
use crate::types::PlainText;
|
||||
use crate::types::Planning;
|
||||
@ -887,7 +888,19 @@ fn compare_plain_list_item<'s>(
|
||||
}
|
||||
};
|
||||
|
||||
// TODO: Compare :pre-blank
|
||||
// Compare pre-blank
|
||||
// :pre-blank appears to count the line breaks between "::" and the contents in a descriptive list. Oddly enough it does not count the spaces so I'm not quite sure what the value is.
|
||||
let pre_blank = get_property_unquoted_atom(emacs, ":pre-blank")?;
|
||||
let pre_blank: Option<PlainListItemPreBlank> = pre_blank
|
||||
.map(|val| val.parse())
|
||||
.map_or(Ok(None), |r| r.map(Some))?;
|
||||
if pre_blank.unwrap_or(0) != rust.pre_blank {
|
||||
this_status = DiffStatus::Bad;
|
||||
message = Some(format!(
|
||||
"Pre-blank mismatch (emacs != rust) {:?} != {:?}",
|
||||
pre_blank, rust.pre_blank
|
||||
));
|
||||
}
|
||||
|
||||
Ok(DiffResult {
|
||||
status: this_status,
|
||||
|
@ -45,6 +45,7 @@ use crate::types::Object;
|
||||
use crate::types::PlainList;
|
||||
use crate::types::PlainListItem;
|
||||
use crate::types::PlainListItemCounter;
|
||||
use crate::types::PlainListItemPreBlank;
|
||||
use crate::types::PlainListType;
|
||||
|
||||
#[cfg_attr(feature = "tracing", tracing::instrument(ret, level = "debug"))]
|
||||
@ -220,6 +221,7 @@ fn plain_list_item<'b, 'g, 'r, 's>(
|
||||
tag: maybe_tag
|
||||
.map(|(_ws, item_tag)| item_tag)
|
||||
.unwrap_or(Vec::new()),
|
||||
pre_blank: 0,
|
||||
children: Vec::new(),
|
||||
},
|
||||
),
|
||||
@ -227,7 +229,11 @@ fn plain_list_item<'b, 'g, 'r, 's>(
|
||||
}
|
||||
Err(_) => {}
|
||||
};
|
||||
let (remaining, _ws) = item_tag_post_gap(&parser_context, remaining)?;
|
||||
let (remaining, pre_blank) = item_tag_post_gap(&parser_context, remaining)?;
|
||||
let pre_blank = Into::<&str>::into(pre_blank)
|
||||
.bytes()
|
||||
.filter(|b| *b == b'\n')
|
||||
.count();
|
||||
|
||||
let (mut remaining, (mut children, _exit_contents)) = many_till(
|
||||
include_input(parser_with_context!(element(true))(&parser_context)),
|
||||
@ -266,6 +272,8 @@ fn plain_list_item<'b, 'g, 'r, 's>(
|
||||
tag: maybe_tag
|
||||
.map(|(_ws, item_tag)| item_tag)
|
||||
.unwrap_or(Vec::new()),
|
||||
pre_blank: PlainListItemPreBlank::try_from(pre_blank)
|
||||
.expect("pre-blank cannot be larger than 2."),
|
||||
children: children.into_iter().map(|(_start, item)| item).collect(),
|
||||
},
|
||||
),
|
||||
|
@ -29,10 +29,12 @@ pub struct PlainListItem<'s> {
|
||||
pub counter: Option<PlainListItemCounter>,
|
||||
pub checkbox: Option<(CheckboxType, &'s str)>,
|
||||
pub tag: Vec<Object<'s>>,
|
||||
pub pre_blank: PlainListItemPreBlank,
|
||||
pub children: Vec<Element<'s>>,
|
||||
}
|
||||
|
||||
pub type PlainListItemCounter = u16;
|
||||
pub type PlainListItemPreBlank = u8;
|
||||
|
||||
#[derive(Debug)]
|
||||
pub enum CheckboxType {
|
||||
|
@ -25,6 +25,7 @@ pub use greater_element::NodeProperty;
|
||||
pub use greater_element::PlainList;
|
||||
pub use greater_element::PlainListItem;
|
||||
pub use greater_element::PlainListItemCounter;
|
||||
pub use greater_element::PlainListItemPreBlank;
|
||||
pub use greater_element::PlainListType;
|
||||
pub use greater_element::PropertyDrawer;
|
||||
pub use greater_element::Table;
|
||||
|
Loading…
x
Reference in New Issue
Block a user