Compare number lines for example blocks.
This commit is contained in:
@@ -52,6 +52,7 @@ use crate::types::Keyword;
|
||||
use crate::types::LatexEnvironment;
|
||||
use crate::types::LatexFragment;
|
||||
use crate::types::LineBreak;
|
||||
use crate::types::LineNumber;
|
||||
use crate::types::Minute;
|
||||
use crate::types::MinuteInner;
|
||||
use crate::types::Month;
|
||||
@@ -83,6 +84,7 @@ use crate::types::StatisticsCookie;
|
||||
use crate::types::StrikeThrough;
|
||||
use crate::types::Subscript;
|
||||
use crate::types::Superscript;
|
||||
use crate::types::SwitchNumberLines;
|
||||
use crate::types::Table;
|
||||
use crate::types::TableCell;
|
||||
use crate::types::TableRow;
|
||||
@@ -1545,7 +1547,7 @@ fn compare_example_block<'b, 's>(
|
||||
let mut this_status = DiffStatus::Good;
|
||||
let mut message = None;
|
||||
|
||||
// TODO: Compare :number-lines :preserve-indent :retain-labels :use-labels :label-fmt
|
||||
// TODO: Compare :preserve-indent :retain-labels :use-labels :label-fmt
|
||||
|
||||
// Compare value
|
||||
let contents = get_property_quoted_string(emacs, ":value")?.unwrap_or(String::new());
|
||||
@@ -1567,6 +1569,46 @@ fn compare_example_block<'b, 's>(
|
||||
));
|
||||
}
|
||||
|
||||
// Compare number-lines
|
||||
let number_lines = get_property(emacs, ":number-lines")?;
|
||||
match (number_lines, &rust.number_lines) {
|
||||
(None, None) => {}
|
||||
(Some(number_lines), Some(rust_number_lines)) => {
|
||||
let token_list = number_lines.as_list()?;
|
||||
let number_type = token_list
|
||||
.get(0)
|
||||
.map(Token::as_atom)
|
||||
.map_or(Ok(None), |r| r.map(Some))?
|
||||
.ok_or(":number-lines should have a type.")?;
|
||||
let number_value = token_list
|
||||
.get(2)
|
||||
.map(Token::as_atom)
|
||||
.map_or(Ok(None), |r| r.map(Some))?
|
||||
.map(|val| val.parse::<LineNumber>())
|
||||
.map_or(Ok(None), |r| r.map(Some))?
|
||||
.ok_or(":number-lines should have a value.")?;
|
||||
match (number_type, number_value, rust_number_lines) {
|
||||
("new", emacs_val, SwitchNumberLines::New(rust_val)) if emacs_val == *rust_val => {}
|
||||
("continued", emacs_val, SwitchNumberLines::Continued(rust_val))
|
||||
if emacs_val == *rust_val => {}
|
||||
_ => {
|
||||
this_status = DiffStatus::Bad;
|
||||
message = Some(format!(
|
||||
"Number lines mismatch (emacs != rust) {:?} != {:?}",
|
||||
number_lines, rust.number_lines
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
_ => {
|
||||
this_status = DiffStatus::Bad;
|
||||
message = Some(format!(
|
||||
"Number lines mismatch (emacs != rust) {:?} != {:?}",
|
||||
number_lines, rust.number_lines
|
||||
));
|
||||
}
|
||||
};
|
||||
|
||||
Ok(DiffResult {
|
||||
status: this_status,
|
||||
name: rust.get_elisp_name(),
|
||||
|
||||
Reference in New Issue
Block a user