pub struct FlatDataSpec {
pub columns: Vec<Column>,
pub decorations: Decorations,
}Expand description
Complete specification for a flat data layout (Table or CSV).
Fields§
§columns: Vec<Column>Column specifications.
decorations: DecorationsRow decorations (separators, prefix, suffix).
Implementations§
Source§impl FlatDataSpec
impl FlatDataSpec
Sourcepub fn resolve_widths(&self, total_width: usize) -> ResolvedWidths
pub fn resolve_widths(&self, total_width: usize) -> ResolvedWidths
Resolve column widths without examining data.
This uses minimum widths for Bounded columns and allocates remaining
space to Fill columns. Use resolve_widths_from_data for data-driven
width calculation.
§Arguments
total_width- Total available width including decorations
Sourcepub fn resolve_widths_from_data<S: AsRef<str>>(
&self,
total_width: usize,
data: &[Vec<S>],
) -> ResolvedWidths
pub fn resolve_widths_from_data<S: AsRef<str>>( &self, total_width: usize, data: &[Vec<S>], ) -> ResolvedWidths
Resolve column widths by examining data to determine optimal widths.
For Bounded columns, scans the data to find the actual maximum width needed, then clamps to the specified bounds. Fill columns receive remaining space after all other columns are resolved.
§Arguments
total_width- Total available width including decorationsdata- Row data where each row is a slice of cell values
§Example
use standout::tabular::{FlatDataSpec, Column, Width};
let spec = FlatDataSpec::builder()
.column(Column::new(Width::Bounded { min: Some(5), max: Some(20) }))
.column(Column::new(Width::Fill))
.separator(" ")
.build();
let data: Vec<Vec<&str>> = vec![
vec!["short", "description"],
vec!["longer value", "another"],
];
let widths = spec.resolve_widths_from_data(80, &data);Source§impl FlatDataSpec
impl FlatDataSpec
Sourcepub fn new(columns: Vec<Column>) -> Self
pub fn new(columns: Vec<Column>) -> Self
Create a new spec with the given columns and default decorations.
Sourcepub fn builder() -> FlatDataSpecBuilder
pub fn builder() -> FlatDataSpecBuilder
Create a spec builder.
Sourcepub fn num_columns(&self) -> usize
pub fn num_columns(&self) -> usize
Get the number of columns.
Sourcepub fn has_fill_column(&self) -> bool
pub fn has_fill_column(&self) -> bool
Check if any column uses Fill width.
Sourcepub fn extract_header(&self) -> Vec<String>
pub fn extract_header(&self) -> Vec<String>
Extract a header row from the spec.
Uses column header if present, otherwise key, otherwise empty string.
Sourcepub fn extract_row(&self, data: &Value) -> Vec<String>
pub fn extract_row(&self, data: &Value) -> Vec<String>
Extract a data row from a JSON value using the spec.
For each column:
- If
keyis set, traverses the JSON to find the value. - If
keyis unset/missing, usesnull_repr. - Handles nested objects via dot notation (e.g. “author.name”).
Trait Implementations§
Source§impl Clone for FlatDataSpec
impl Clone for FlatDataSpec
Source§fn clone(&self) -> FlatDataSpec
fn clone(&self) -> FlatDataSpec
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more