Feedback: dry out term, make fmt_spaces_with_newline_mode more readable, explicitly implement all the variants in ann_lift_spaces

This commit is contained in:
Joshua Warner 2024-12-04 20:15:53 -08:00
parent 8642f8500e
commit 6ac6a7c19a
No known key found for this signature in database
GPG key ID: 89AD497003F93FDD
3 changed files with 98 additions and 21 deletions

View file

@ -37,17 +37,22 @@ pub fn fmt_spaces_with_newline_mode(
mode,
SpacesNewlineMode::SkipNewlinesAtStart | SpacesNewlineMode::SkipNewlinesAtBoth
) {
while let Some(CommentOrNewline::Newline) = spaces.first() {
spaces = &spaces[1..];
}
let skip_count = spaces
.iter()
.take_while(|s| *s == &CommentOrNewline::Newline)
.count();
spaces = &spaces[skip_count..];
}
if matches!(
mode,
SpacesNewlineMode::SkipNewlinesAtEnd | SpacesNewlineMode::SkipNewlinesAtBoth
) {
while let Some(CommentOrNewline::Newline) = spaces.last() {
spaces = &spaces[..spaces.len() - 1];
}
let skip_count = spaces
.iter()
.rev()
.take_while(|s| *s == &CommentOrNewline::Newline)
.count();
spaces = &spaces[..spaces.len() - skip_count];
}
fmt_spaces(buf, spaces.iter(), indent);
}