2024-04-11 21:51:53 +09:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2024-04-26 08:55:27 +09:00
|
|
|
require 'optparse'
|
|
|
|
|
2024-04-15 22:48:09 +09:00
|
|
|
COLUMNS = 3
|
2024-04-11 21:51:53 +09:00
|
|
|
|
2024-04-24 22:37:28 +09:00
|
|
|
def run
|
|
|
|
listed_filenames = list_filenames
|
|
|
|
filenames_matrix = slice_filenames(listed_filenames)
|
|
|
|
filled_filenames = fill_filenames(filenames_matrix)
|
|
|
|
arrange_filenames(filled_filenames)
|
2024-04-11 21:51:53 +09:00
|
|
|
end
|
|
|
|
|
2024-04-24 22:37:28 +09:00
|
|
|
def list_filenames
|
2024-05-02 08:14:25 +09:00
|
|
|
params = ARGV.getopts('a')
|
|
|
|
flags = params['a'] ? File::FNM_DOTMATCH : 0
|
|
|
|
Dir.glob('*', flags)
|
2024-04-11 21:51:53 +09:00
|
|
|
end
|
|
|
|
|
2024-04-24 22:37:28 +09:00
|
|
|
def slice_filenames(listed_filenames)
|
|
|
|
columns_size = listed_filenames.size.ceildiv(COLUMNS)
|
|
|
|
listed_filenames.each_slice(columns_size).to_a
|
2024-04-11 21:51:53 +09:00
|
|
|
end
|
|
|
|
|
2024-04-24 22:37:28 +09:00
|
|
|
def fill_filenames(filenames_matrix)
|
|
|
|
array_size = filenames_matrix.map(&:size).max
|
|
|
|
filenames_matrix.each do |slice|
|
2024-04-15 22:48:09 +09:00
|
|
|
slice << '' while slice.size < array_size
|
2024-04-11 21:51:53 +09:00
|
|
|
end
|
2024-04-24 22:37:28 +09:00
|
|
|
filenames_matrix.transpose
|
2024-04-11 21:51:53 +09:00
|
|
|
end
|
|
|
|
|
2024-04-24 22:37:28 +09:00
|
|
|
def arrange_filenames(filled_filenames)
|
|
|
|
filenames_count = filled_filenames.flatten.map(&:size).max
|
|
|
|
filled_filenames.each do |arrange|
|
2024-04-15 22:48:09 +09:00
|
|
|
arrange.each do |arranged|
|
2024-04-24 22:37:28 +09:00
|
|
|
print arranged.ljust(filenames_count + 5)
|
2024-04-11 21:51:53 +09:00
|
|
|
end
|
|
|
|
puts
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2024-04-24 22:37:28 +09:00
|
|
|
run
|