From 1e1f10c7635ea0126eadb28f8f31c8ec38a77695 Mon Sep 17 00:00:00 2001 From: Ayush Poddar Date: Wed, 7 Jun 2023 17:21:57 +0530 Subject: [PATCH 1/5] modify indentations --- lib/yaml/dark_colors.yaml | 6 +++--- lib/yaml/light_colors.yaml | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/yaml/dark_colors.yaml b/lib/yaml/dark_colors.yaml index 37f4510..4c72228 100644 --- a/lib/yaml/dark_colors.yaml +++ b/lib/yaml/dark_colors.yaml @@ -9,9 +9,9 @@ dead_link: red link: cyan # special files -socket: green -blockdev: green -chardev: green +socket: green +blockdev: green +chardev: green # Access Modes write: darkkhaki diff --git a/lib/yaml/light_colors.yaml b/lib/yaml/light_colors.yaml index dff3283..a6af42d 100644 --- a/lib/yaml/light_colors.yaml +++ b/lib/yaml/light_colors.yaml @@ -9,9 +9,9 @@ dead_link: red link: cyan # special files -socket: darkgray -blockdev: darkgray -chardev: darkgray +socket: darkgray +blockdev: darkgray +chardev: darkgray # Access Modes write: red From 4f1333ff66cb6510d95d01f65997147b95a80c86 Mon Sep 17 00:00:00 2001 From: Ayush Poddar Date: Wed, 7 Jun 2023 17:22:40 +0530 Subject: [PATCH 2/5] add colors for hidden files/directories --- lib/yaml/dark_colors.yaml | 2 ++ lib/yaml/light_colors.yaml | 2 ++ 2 files changed, 4 insertions(+) diff --git a/lib/yaml/dark_colors.yaml b/lib/yaml/dark_colors.yaml index 4c72228..cb52a0d 100644 --- a/lib/yaml/dark_colors.yaml +++ b/lib/yaml/dark_colors.yaml @@ -12,6 +12,8 @@ link: cyan socket: green blockdev: green chardev: green +hidden: burlywood +hidden_dir: slategray # Access Modes write: darkkhaki diff --git a/lib/yaml/light_colors.yaml b/lib/yaml/light_colors.yaml index a6af42d..e665c7a 100644 --- a/lib/yaml/light_colors.yaml +++ b/lib/yaml/light_colors.yaml @@ -12,6 +12,8 @@ link: cyan socket: darkgray blockdev: darkgray chardev: darkgray +hidden: seagreen +hidden_dir: royalblue # Access Modes write: red From fe59bb7c5f7f2b69e11902dda063f5ab487e57c7 Mon Sep 17 00:00:00 2001 From: Ayush Poddar Date: Wed, 7 Jun 2023 17:23:08 +0530 Subject: [PATCH 3/5] add logic to show different color for hidden files/directories --- lib/colorls/core.rb | 3 ++- lib/colorls/fileinfo.rb | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/colorls/core.rb b/lib/colorls/core.rb index 89a647f..b558968 100644 --- a/lib/colorls/core.rb +++ b/lib/colorls/core.rb @@ -407,6 +407,7 @@ module ColorLS when file.blockdev? then :blockdev when file.socket? then :socket when file.executable? then :executable_file + when file.hidden? then :hidden when @files.key?(key) then :recognized_file else :unrecognized_file end @@ -418,7 +419,7 @@ module ColorLS key = content.name.downcase.to_sym key = @folder_aliases[key] unless @folders.key? key key = :folder if key.nil? - color = @colors[:dir] + color = content.hidden? ? @colors[:hidden_dir] : @colors[:dir] group = :folders else key = File.extname(content.name).delete_prefix('.').downcase.to_sym diff --git a/lib/colorls/fileinfo.rb b/lib/colorls/fileinfo.rb index 94f421e..0ade7a0 100644 --- a/lib/colorls/fileinfo.rb +++ b/lib/colorls/fileinfo.rb @@ -40,6 +40,10 @@ module ColorLS @dead end + def hidden? + @name.start_with?('.') + end + def owner return @@users[@stats.uid] if @@users.key? @stats.uid From 6f7f4ab47d0a1d8fdf86fcf9b6f27fde34f1ef1e Mon Sep 17 00:00:00 2001 From: Ayush Poddar Date: Wed, 7 Jun 2023 17:40:15 +0530 Subject: [PATCH 4/5] modify the instance doubles ensuring green specs --- spec/color_ls/core_spec.rb | 3 +++ spec/color_ls/flags_spec.rb | 2 ++ 2 files changed, 5 insertions(+) diff --git a/spec/color_ls/core_spec.rb b/spec/color_ls/core_spec.rb index 907abbb..e6470dd 100644 --- a/spec/color_ls/core_spec.rb +++ b/spec/color_ls/core_spec.rb @@ -25,6 +25,7 @@ RSpec.describe ColorLS::Core do chardev?: false, socket?: false, symlink?: false, + hidden?: false, stats: instance_double(File::Stat, mode: 0o444, # read for user, owner, other setuid?: false, @@ -47,6 +48,7 @@ RSpec.describe ColorLS::Core do chardev?: false, socket?: false, symlink?: false, + hidden?: false, stats: instance_double(File::Stat, mode: 0o444, # read for user, owner, other setuid?: false, @@ -77,6 +79,7 @@ RSpec.describe ColorLS::Core do chardev?: false, socket?: false, symlink?: false, + hidden?: true, executable?: false ) diff --git a/spec/color_ls/flags_spec.rb b/spec/color_ls/flags_spec.rb index d09b1f6..746df84 100644 --- a/spec/color_ls/flags_spec.rb +++ b/spec/color_ls/flags_spec.rb @@ -26,6 +26,7 @@ RSpec.describe ColorLS::Flags do chardev?: false, socket?: false, symlink?: false, + hidden?: false, stats: instance_double(File::Stat, mode: 0o444, # read for user, owner, other setuid?: true, @@ -467,6 +468,7 @@ RSpec.describe ColorLS::Flags do chardev?: false, socket?: false, symlink?: true, + hidden?: false, link_target: "#{FIXTURES}/z.txt", dead?: false, executable?: false From 305e2486f4431fc7e0487423f90ed380852194b2 Mon Sep 17 00:00:00 2001 From: Ayush Poddar Date: Wed, 7 Jun 2023 18:00:34 +0530 Subject: [PATCH 5/5] refactor: split into two methods --- lib/colorls/core.rb | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/lib/colorls/core.rb b/lib/colorls/core.rb index b558968..f5f7707 100644 --- a/lib/colorls/core.rb +++ b/lib/colorls/core.rb @@ -416,20 +416,32 @@ module ColorLS def options(content) if content.directory? - key = content.name.downcase.to_sym - key = @folder_aliases[key] unless @folders.key? key - key = :folder if key.nil? - color = content.hidden? ? @colors[:hidden_dir] : @colors[:dir] - group = :folders + options_directory(content).values_at(:key, :color, :group) else - key = File.extname(content.name).delete_prefix('.').downcase.to_sym - key = @file_aliases[key] unless @files.key? key - color = file_color(content, key) - group = @files.key?(key) ? :recognized_files : :unrecognized_files - key = :file if key.nil? + options_file(content).values_at(:key, :color, :group) end + end - [key, color, group] + def options_directory(content) + key = content.name.downcase.to_sym + key = @folder_aliases[key] unless @folders.key?(key) + key = :folder if key.nil? + + color = content.hidden? ? @colors[:hidden_dir] : @colors[:dir] + + {key: key, color: color, group: :folders} + end + + def options_file(content) + key = File.extname(content.name).delete_prefix('.').downcase.to_sym + key = @file_aliases[key] unless @files.key?(key) + + color = file_color(content, key) + group = @files.key?(key) ? :recognized_files : :unrecognized_files + + key = :file if key.nil? + + {key: key, color: color, group: group} end def tree_contents(path)