moved grid to it's own crate named nu-term-grid

This commit is contained in:
Darren Schroeder 2021-10-07 10:32:39 -05:00
parent 7697f7bdce
commit 58d73d4c23
10 changed files with 83 additions and 6 deletions

10
Cargo.lock generated
View File

@ -294,6 +294,7 @@ dependencies = [
"nu-path", "nu-path",
"nu-protocol", "nu-protocol",
"nu-table", "nu-table",
"nu-term-grid",
"pretty_assertions", "pretty_assertions",
"reedline", "reedline",
"tempfile", "tempfile",
@ -523,10 +524,10 @@ dependencies = [
"nu-path", "nu-path",
"nu-protocol", "nu-protocol",
"nu-table", "nu-table",
"nu-term-grid",
"sysinfo", "sysinfo",
"terminal_size", "terminal_size",
"thiserror", "thiserror",
"unicode-width",
] ]
[[package]] [[package]]
@ -589,6 +590,13 @@ dependencies = [
"unicode-width", "unicode-width",
] ]
[[package]]
name = "nu-term-grid"
version = "0.36.0"
dependencies = [
"unicode-width",
]
[[package]] [[package]]
name = "num-integer" name = "num-integer"
version = "0.1.44" version = "0.1.44"

View File

@ -19,6 +19,7 @@ nu-parser = { path="./crates/nu-parser" }
nu-path = { path="./crates/nu-path" } nu-path = { path="./crates/nu-path" }
nu-protocol = { path = "./crates/nu-protocol" } nu-protocol = { path = "./crates/nu-protocol" }
nu-table = { path = "./crates/nu-table" } nu-table = { path = "./crates/nu-table" }
nu-term-grid = { path = "./crates/nu-term-grid" }
miette = "3.0.0" miette = "3.0.0"
# mimalloc = { version = "*", default-features = false } # mimalloc = { version = "*", default-features = false }

View File

@ -11,11 +11,11 @@ nu-json = { path = "../nu-json" }
nu-path = { path = "../nu-path" } nu-path = { path = "../nu-path" }
nu-protocol = { path = "../nu-protocol" } nu-protocol = { path = "../nu-protocol" }
nu-table = { path = "../nu-table" } nu-table = { path = "../nu-table" }
nu-term-grid = { path = "../nu-term-grid" }
# Potential dependencies for extras # Potential dependencies for extras
glob = "0.3.0" glob = "0.3.0"
thiserror = "1.0.29" thiserror = "1.0.29"
sysinfo = "0.20.4" sysinfo = "0.20.4"
chrono = { version="0.4.19", features=["serde"] } chrono = { version="0.4.19", features=["serde"] }
unicode-width = "0.1.9"
terminal_size = "0.1.17" terminal_size = "0.1.17"

View File

@ -1,10 +1,10 @@
use super::grid::{Alignment, Cell, Direction, Filling, Grid, GridOptions};
use nu_engine::CallExt; use nu_engine::CallExt;
use nu_protocol::{ use nu_protocol::{
ast::{Call, PathMember}, ast::{Call, PathMember},
engine::{Command, EvaluationContext}, engine::{Command, EvaluationContext},
Signature, Span, SyntaxShape, Value, Signature, Span, SyntaxShape, Value,
}; };
use nu_term_grid::grid::{Alignment, Cell, Direction, Filling, Grid, GridOptions};
use terminal_size::{Height, Width}; //{Alignment, Cell, Direction, Filling, Grid, GridOptions}; use terminal_size::{Height, Width}; //{Alignment, Cell, Direction, Filling, Grid, GridOptions};
pub struct Griddle; pub struct Griddle;

View File

@ -1,7 +1,5 @@
pub mod grid;
mod griddle; mod griddle;
mod table; mod table;
pub use grid::Grid;
pub use griddle::Griddle; pub use griddle::Griddle;
pub use table::Table; pub use table::Table;

22
crates/nu-term-grid/.gitignore vendored Normal file
View File

@ -0,0 +1,22 @@
/target
/scratch
**/*.rs.bk
history.txt
tests/fixtures/nuplayground
crates/*/target
# Debian/Ubuntu
debian/.debhelper/
debian/debhelper-build-stamp
debian/files
debian/nu.substvars
debian/nu/
# macOS junk
.DS_Store
# JetBrains' IDE items
.idea/*
# VSCode's IDE items
.vscode/*

View File

@ -0,0 +1,15 @@
[package]
authors = ["The Nu Project Contributors"]
description = "Nushell grid printing"
edition = "2018"
license = "MIT"
name = "nu-term-grid"
version = "0.36.0"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[[bin]]
name = "grid"
path = "src/main.rs"
[dependencies]
unicode-width = "0.1.9"

View File

@ -13,7 +13,7 @@
//! needed. For example: //! needed. For example:
//! //!
//! ```rust //! ```rust
//! use nu_command::grid::{Grid, GridOptions, Direction, Filling, Cell}; //! use nu_term_grid::grid::{Grid, GridOptions, Direction, Filling, Cell};
//! //!
//! let mut grid = Grid::new(GridOptions { //! let mut grid = Grid::new(GridOptions {
//! filling: Filling::Spaces(1), //! filling: Filling::Spaces(1),

View File

@ -0,0 +1,3 @@
pub mod grid;
pub use grid::Grid;

View File

@ -0,0 +1,30 @@
use nu_term_grid::grid::{Alignment, Cell, Direction, Filling, Grid, GridOptions};
// This produces:
//
// 1 | 128 | 16384 | 2097152 | 268435456 | 34359738368 | 4398046511104
// 2 | 256 | 32768 | 4194304 | 536870912 | 68719476736 | 8796093022208
// 4 | 512 | 65536 | 8388608 | 1073741824 | 137438953472 | 17592186044416
// 8 | 1024 | 131072 | 16777216 | 2147483648 | 274877906944 | 35184372088832
// 16 | 2048 | 262144 | 33554432 | 4294967296 | 549755813888 | 70368744177664
// 32 | 4096 | 524288 | 67108864 | 8589934592 | 1099511627776 | 140737488355328
// 64 | 8192 | 1048576 | 134217728 | 17179869184 | 2199023255552 |
fn main() {
let mut grid = Grid::new(GridOptions {
direction: Direction::TopToBottom,
filling: Filling::Text(" | ".into()),
});
for i in 0..48 {
let mut cell = Cell::from(format!("{}", 2_isize.pow(i)));
cell.alignment = Alignment::Right;
grid.add(cell)
}
if let Some(grid_display) = grid.fit_into_width(80) {
println!("{}", grid_display);
} else {
println!("Couldn't fit grid into 80 columns!");
}
}