From 95ab3daa86c7cf73c7533826400bfba77829cb49 Mon Sep 17 00:00:00 2001 From: ChristianVisintin Date: Thu, 10 Dec 2020 08:44:35 +0100 Subject: [PATCH] Elide file names longer than 24 --- src/fs/mod.rs | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/src/fs/mod.rs b/src/fs/mod.rs index 46a7186..f92dec9 100644 --- a/src/fs/mod.rs +++ b/src/fs/mod.rs @@ -170,10 +170,15 @@ impl std::fmt::Display for FsEntry { let size: String = String::from("4096"); // Get date let datetime: String = time_to_str(dir.last_change_time, "%b %d %Y %H:%M"); + // Set file name (or elide if too long) + let dir_name: String = match dir.name.len() >= 24 { + false => dir.name.clone(), + true => format!("{}...", &dir.name.as_str()[0..20]), + }; write!( f, "{:24}\t{:12}\t{:12}\t{:9}\t{:17}", - dir.name.as_str(), + dir_name, mode, username, size, @@ -260,10 +265,15 @@ impl std::fmt::Display for FsEntry { let size: ByteSize = ByteSize(file.size as u64); // Get date let datetime: String = time_to_str(file.last_change_time, "%b %d %Y %H:%M"); + // Set file name (or elide if too long) + let file_name: String = match file.name.len() >= 24 { + false => file.name.clone(), + true => format!("{}...", &file.name.as_str()[0..20]), + }; write!( f, "{:24}\t{:12}\t{:12}\t{:9}\t{:17}", - file.name.as_str(), + file_name, mode, username, size, @@ -354,10 +364,15 @@ impl std::fmt::Display for FsEntry { let size: String = String::from("4096"); // Get date let datetime: String = time_to_str(dir.last_change_time, "%b %d %Y %H:%M"); + // Set file name (or elide if too long) + let dir_name: String = match dir.name.len() >= 24 { + false => dir.name.clone(), + true => format!("{}...", &dir.name.as_str()[0..20]), + }; write!( f, "{:24}\t{:12}\t{:12}\t{:9}\t{:17}", - dir.name.as_str(), + dir_name, mode, username, size, @@ -438,10 +453,15 @@ impl std::fmt::Display for FsEntry { let size: ByteSize = ByteSize(file.size as u64); // Get date let datetime: String = time_to_str(file.last_change_time, "%b %d %Y %H:%M"); + // Set file name (or elide if too long) + let file_name: String = match file.name.len() >= 24 { + false => file.name.clone(), + true => format!("{}...", &file.name.as_str()[0..20]), + }; write!( f, "{:24}\t{:12}\t{:12}\t{:9}\t{:17}", - file.name.as_str(), + file_name, mode, username, size,