tv-cli 0.7.0

Format json into table view
Documentation
pub(crate) fn multi_lines(str_vec: Vec<Vec<String>>) -> Vec<Vec<String>> {
    let split_values = str_vec.iter().map(|x| x.iter().map(|x| x.split("\n")));
    let mapper: Vec<Vec<(usize, usize, usize)>> = split_values
        .clone()
        .map(|xs| {
            (
                xs.len(),
                xs.map(|x| x.clone().collect::<Vec<_>>().len())
                    .max()
                    .unwrap_or_default(),
            )
        })
        .enumerate()
        .flat_map(|(idx, (h, v))| {
            (0..v).map(move |y| (0..h).map(move |x| (idx, x, y)).collect::<Vec<_>>())
        })
        .collect();
    let fields = mapper
        .iter()
        .map(|xs| {
            xs.iter()
                .map(|&(idx, ix, iy)| {
                    split_values
                        .clone()
                        .nth(idx)
                        .and_then(|x| x.clone().nth(ix))
                        .and_then(|x| x.clone().nth(iy))
                        .unwrap_or_default()
                })
                .collect::<Vec<_>>()
        })
        .collect::<Vec<_>>();

    fields
        .into_iter()
        .map(|xs| xs.into_iter().map(String::from).collect::<Vec<_>>())
        .collect()
}