13 releases (stable)

1.3.3 Oct 10, 2023
1.3.2 Jan 28, 2023
1.3.1 Feb 29, 2020
1.1.3 Dec 15, 2019
0.1.1 Sep 8, 2019

#283 in Text processing


Used in jobrog

MIT license

275KB
961 lines

colonnade

tabular text

         Colonnade lets     As you can see, it supports text     If you want to 
        you format text      alignment, viewport width, and      colorize your  
            in columns.              column widths.              table, you'll  
                                                                 need to use the
                                                                 macerate       
                                                                 method.        

                           Two or more rows of columns makes                    
                                        a table.                                

USAGE

extern crate colonnade;
use colonnade::{Alignment, Colonnade};

#[allow(unused_must_use)]
fn main() {
    // text to put in tabular form
    let text = vec![
        vec![
            "Colonnade lets you format text in columns.",
            "As you can see, it supports text alignment, viewport width, and column widths.",
            "If you want to colorize your table, you'll need to use the macerate method.",
        ],
        vec!["", "Two or more rows of columns makes a table.", ""],
    ];
    let mut colonnade = Colonnade::new(3, 80).unwrap(); // 3 columns of text in an 80-character viewport

    // configure the table a bit
    colonnade.left_margin(4);
    colonnade.columns[0].left_margin(8); // the first column should have a left margin 8 spaces wide
    colonnade.fixed_width(15);
    colonnade.columns[0].clear_limits(); // the central column has no fixed size limits
    colonnade.columns[0].alignment(Alignment::Right);
    colonnade.columns[1].alignment(Alignment::Center);
    colonnade.spaces_between_rows(1);    // add a blank link between rows

    // now print out the table
    for line in colonnade.tabulate(&text).unwrap() {
        println!("{}", line);
    }
}

This produces the text at the top of the page.

For further details see the documentation on docs.rs.

Dependencies

~0.5–1MB
~17K SLoC