#grid #textual #no-std #data #ls #format #alignment

no-std nls_term_grid

Library for arranging textual data in a grid format similar to ls

4 releases (2 breaking)

0.3.0 Apr 27, 2024
0.2.0 Apr 6, 2024
0.1.1 Mar 29, 2024
0.1.0 Mar 24, 2024

#355 in Command-line interface


Used in nls-ls

MIT/Apache

38KB
604 lines

nls_term_grid

CICD Crates.io Docs.rs License

This library arranges textual data in a grid format similar to ls


This library is extracted from nls-ls v0.4.0.

The Grid API and Implementation is inspired by ogham/term_grid


Example

use nls_term_grid::{Grid, Direction, Alignment};

type GridCell = nls_term_grid::GridCell<String>;

let cells: [GridCell; 15] = [
    GridCell::from(String::from("file10")),
    GridCell::from(String::from("file20")),
    GridCell::from(String::from("file3")),
    GridCell::from(String::from("file400")),
    GridCell::from(String::from("file5")),

    GridCell::from(String::from("file100")),
    GridCell::from(String::from("file2")),
    GridCell::from(String::from("file30")),
    GridCell::from(String::from("file4")),
    GridCell::from(String::from("file500")),

    GridCell::from(String::from("file1")),
    GridCell::from(String::from("file200")),
    GridCell::from(String::from("file300")),
    GridCell::from(String::from("file40")),
    GridCell::from(String::from("file50")),
];

let grid = Grid::new("  ", Direction::LeftToRight, &cells);
let display = grid.fit_into_width(35).unwrap();

assert_eq!(
    display.to_string(),
    "file10   file20   file3   file400\n\
     file5    file100  file2   file30\n\
     file4    file500  file1   file200\n\
     file300  file40   file50\n"
);

Dependencies

~1.5MB
~18K SLoC