From 4cdf88a632047ed90351f40f7433a19977ea84fc Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Wed, 4 Oct 2023 09:51:28 -0400 Subject: [PATCH] Switches are not stored for comment blocks, but they are allowed to appear. --- .../lesser_block/comment/with_switches.org | 3 +++ .../lesser_block/example/line_numbers.org | 7 +++++++ src/compare/diff.rs | 16 +++++++++++++--- src/parser/lesser_block.rs | 7 +------ src/types/lesser_element.rs | 1 - 5 files changed, 24 insertions(+), 10 deletions(-) create mode 100644 org_mode_samples/lesser_element/lesser_block/comment/with_switches.org create mode 100644 org_mode_samples/lesser_element/lesser_block/example/line_numbers.org diff --git a/org_mode_samples/lesser_element/lesser_block/comment/with_switches.org b/org_mode_samples/lesser_element/lesser_block/comment/with_switches.org new file mode 100644 index 00000000..32ea0227 --- /dev/null +++ b/org_mode_samples/lesser_element/lesser_block/comment/with_switches.org @@ -0,0 +1,3 @@ +#+begin_comment -n 20 +foo +#+end_comment diff --git a/org_mode_samples/lesser_element/lesser_block/example/line_numbers.org b/org_mode_samples/lesser_element/lesser_block/example/line_numbers.org new file mode 100644 index 00000000..44bf44cc --- /dev/null +++ b/org_mode_samples/lesser_element/lesser_block/example/line_numbers.org @@ -0,0 +1,7 @@ +#+begin_example -n 5 +foo +#+end_example + +#+begin_example +n 10 +foo +#+end_example diff --git a/src/compare/diff.rs b/src/compare/diff.rs index 1c31a821..cffd9dc6 100644 --- a/src/compare/diff.rs +++ b/src/compare/diff.rs @@ -1542,10 +1542,20 @@ fn compare_example_block<'b, 's>( emacs: &'b Token<'s>, rust: &'b ExampleBlock<'s>, ) -> Result, Box> { - let this_status = DiffStatus::Good; - let message = None; + let mut this_status = DiffStatus::Good; + let mut message = None; - // TODO: Compare :value :switches :number-lines :preserve-indent :retain-labels :use-labels :label-fmt + // TODO: Compare :switches :number-lines :preserve-indent :retain-labels :use-labels :label-fmt + + // Compare value + let contents = get_property_quoted_string(emacs, ":value")?.unwrap_or(String::new()); + if contents != rust.contents { + this_status = DiffStatus::Bad; + message = Some(format!( + "Value mismatch (emacs != rust) {:?} != {:?}", + contents, rust.contents + )); + } Ok(DiffResult { status: this_status, diff --git a/src/parser/lesser_block.rs b/src/parser/lesser_block.rs index 507a8513..b3e05cd6 100644 --- a/src/parser/lesser_block.rs +++ b/src/parser/lesser_block.rs @@ -95,7 +95,7 @@ pub(crate) fn comment_block<'b, 'g, 'r, 's>( input: OrgSource<'s>, ) -> Res, CommentBlock<'s>> { let (remaining, name) = lesser_block_begin("comment")(context, input)?; - let (remaining, parameters) = opt(tuple((space1, data)))(remaining)?; + let (remaining, _parameters) = opt(tuple((space1, data)))(remaining)?; let (remaining, _nl) = recognize(tuple((space0, line_ending)))(remaining)?; let lesser_block_end_specialized = lesser_block_end("comment"); let contexts = [ @@ -109,10 +109,6 @@ pub(crate) fn comment_block<'b, 'g, 'r, 's>( let parser_context = context.with_additional_node(&contexts[0]); let parser_context = parser_context.with_additional_node(&contexts[1]); let parser_context = parser_context.with_additional_node(&contexts[2]); - let parameters = match parameters { - Some((_ws, parameters)) => Some(parameters), - None => None, - }; let (remaining, contents) = parser_with_context!(text_until_exit)(&parser_context)(remaining)?; let (remaining, _end) = lesser_block_end_specialized(&parser_context, remaining)?; @@ -123,7 +119,6 @@ pub(crate) fn comment_block<'b, 'g, 'r, 's>( CommentBlock { source: source.into(), name: name.into(), - data: parameters.map(|parameters| Into::<&str>::into(parameters)), contents: contents.into(), }, )) diff --git a/src/types/lesser_element.rs b/src/types/lesser_element.rs index 77964cfe..251376d2 100644 --- a/src/types/lesser_element.rs +++ b/src/types/lesser_element.rs @@ -33,7 +33,6 @@ pub struct VerseBlock<'s> { pub struct CommentBlock<'s> { pub source: &'s str, pub name: &'s str, - pub data: Option<&'s str>, pub contents: &'s str, }