use std::fmt;
pub(crate) struct ProseList;
impl ProseList {
pub(crate) fn join_quoted<T: fmt::Display>(names: &[T], conjunction: &str) -> String {
let quoted_names: Vec<String> = names.iter().map(|name| format!("`{name}`")).collect();
Self::join("ed_names, conjunction)
}
pub(crate) fn join(phrases: &[String], conjunction: &str) -> String {
let Some((last_phrase, leading_phrases)) = phrases.split_last() else {
return String::new();
};
let is_single = leading_phrases.is_empty();
if is_single {
return last_phrase.clone();
}
let leading_list = leading_phrases.join(", ");
format!("{leading_list} {conjunction} {last_phrase}")
}
}