@@ -6,14 +6,24 @@ use tabled::settings::{
66} ;
77
88/// Truncate arrays to first 3 + last 3 when over 6 elements.
9- fn format_array ( arr : & [ serde_json :: Value ] ) -> String {
10- use crossterm :: style :: Stylize ;
9+ /// Returns (formatted_values, total_count) where total_count is Some when truncated.
10+ pub fn truncate_array ( arr : & [ serde_json :: Value ] ) -> ( String , Option < usize > ) {
1111 if arr. len ( ) > 6 {
1212 let head: Vec < String > = arr[ ..3 ] . iter ( ) . map ( |v| v. to_string ( ) ) . collect ( ) ;
1313 let tail: Vec < String > = arr[ arr. len ( ) -3 ..] . iter ( ) . map ( |v| v. to_string ( ) ) . collect ( ) ;
14- format ! ( "[{}, ..., {}] {} " , head. join( ", " ) , tail. join( ", " ) , format! ( "({} items)" , arr. len( ) ) . dark_grey ( ) )
14+ ( format ! ( "[{}, ..., {}]" , head. join( ", " ) , tail. join( ", " ) ) , Some ( arr. len ( ) ) )
1515 } else {
16- format ! ( "[{}]" , arr. iter( ) . map( |v| v. to_string( ) ) . collect:: <Vec <_>>( ) . join( ", " ) )
16+ ( format ! ( "[{}]" , arr. iter( ) . map( |v| v. to_string( ) ) . collect:: <Vec <_>>( ) . join( ", " ) ) , None )
17+ }
18+ }
19+
20+ /// Format an array for styled table output.
21+ fn format_array ( arr : & [ serde_json:: Value ] ) -> String {
22+ use crossterm:: style:: Stylize ;
23+ let ( formatted, count) = truncate_array ( arr) ;
24+ match count {
25+ Some ( n) => format ! ( "{formatted} {}" , format!( "({n} items)" ) . dark_grey( ) ) ,
26+ None => formatted,
1727 }
1828}
1929
0 commit comments