text_alignment 0.1.0

Align your text in Rust in the CLI.
Documentation
fn calculate_padding(max: usize, current: usize, x_padding: Option<u8>) -> (usize, usize) {
    let total = max - current;
    let extra = x_padding.unwrap_or(0) as usize;
    (total / 2 + extra, total / 2)
}

pub fn center(text: &[&str], x_padding: Option<u8>) -> String {
    let longest = text.iter().max_by_key(|s| s.len()).map_or(0, |s| s.len());

    text.iter().map(|s| {
        let (left_pad, right_pad) = calculate_padding(longest, s.len(), x_padding);
        format!("{}{}{}", " ".repeat(left_pad), s, " ".repeat(right_pad))
    }).collect::<Vec<_>>().join("\n")
}

pub fn print_center(text: &[&str], x_padding: Option<u8>) {
    println!("{}", center(text, x_padding));
}

pub fn right(text: &[&str], x_padding: Option<u8>) -> String {
    let longest = text.iter().max_by_key(|s| s.len()).map_or(0, |s| s.len());

    text.iter().map(|s| {
        let (left_pad, _) = calculate_padding(longest, s.len(), x_padding);

        format!("{}{}", " ".repeat(left_pad), s)
    }).collect::<Vec<_>>().join("\n")
}

pub fn print_right(text: &[&str], x_padding: Option<u8>) {
    println!("{}", right(text, x_padding));
}