From dcc93559a21f3140525fb81b86aa64c94d1a94ae Mon Sep 17 00:00:00 2001 From: "Jip J. Dekker" Date: Wed, 16 Oct 2024 16:48:57 +1100 Subject: [PATCH] Fix the output of additional newlines in documentation --- src/main.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main.rs b/src/main.rs index 61bd9c1..9e163cd 100644 --- a/src/main.rs +++ b/src/main.rs @@ -218,7 +218,12 @@ impl<'a> Item<'a> { }; let start = start.unwrap_or(node.start_byte()); - let content: Cow<'a, str> = Cow::Borrowed(&text[start..node.end_byte()]); + let end = if node.utf8_text(&text.as_bytes()).unwrap().ends_with('\n') { + node.end_byte() - 1 + } else { + node.end_byte() + }; + let content: Cow<'a, str> = Cow::Borrowed(&text[start..end]); match node.kind() { "attribute_item" => { // Ignore and add to the next item @@ -441,7 +446,7 @@ impl Display for Module<'_> { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { let mut last = None; for (newline, item) in &self.items { - if *newline || last != Some(item.item_order()) { + if *newline || (last.is_some() && last != Some(item.item_order())) { writeln!(f)?; } writeln!(f, "{}", item)?;