use super::UseStmt;
use super::config::Style;
pub(super) fn replacement(
style: Style,
blank_line_count: usize,
pad: &str,
stmts: &[UseStmt<'_>],
) -> String {
let ordered: Vec<&UseStmt<'_>> = match style {
Style::SingleGroup => stmts.iter().collect(),
Style::Grouped => {
let mut ordered: Vec<&UseStmt<'_>> = stmts.iter().collect();
ordered.sort_by_key(|stmt| stmt.rank);
ordered
}
};
let mut out = String::new();
for (index, stmt) in ordered.iter().enumerate() {
if index > 0 {
let blanks = match style {
Style::SingleGroup => 0,
Style::Grouped if ordered[index - 1].rank == stmt.rank => 0,
Style::Grouped => blank_line_count,
};
for _ in 0..=blanks {
out.push('\n');
}
out.push_str(pad);
}
out.push_str(&stmt.text);
}
out
}