2024-04-11 21:51:53 +09:00
# frozen_string_literal: true
2024-04-15 22:48:09 +09:00
COLUMNS = 3
files = [ ]
2024-04-11 21:51:53 +09:00
2024-04-15 22:48:09 +09:00
def run ( files )
served = serve ( files )
sliced = slice ( served )
filled = fill ( sliced )
arranged ( filled )
2024-04-11 21:51:53 +09:00
end
2024-04-15 22:48:09 +09:00
# def serve(files)
# Dir.glob('*').each do |file|
# files = file
# end
# end
def serve ( files )
files . concat ( Dir . glob ( '*' ) )
2024-04-11 21:51:53 +09:00
end
2024-04-15 22:48:09 +09:00
def slice ( served )
element = if ( served . size % COLUMNS ) . zero?
served . size / COLUMNS
else
served . size / COLUMNS + 1
end
served . each_slice ( element ) . to_a
2024-04-11 21:51:53 +09:00
end
2024-04-15 22:48:09 +09:00
def fill ( sliced )
array_size = sliced . map ( & :size ) . max
sliced . each do | slice |
slice << '' while slice . size < array_size
2024-04-11 21:51:53 +09:00
end
2024-04-15 22:48:09 +09:00
sliced . transpose
2024-04-11 21:51:53 +09:00
end
2024-04-15 22:48:09 +09:00
def arranged ( filled )
element2 = filled . flatten . map ( & :size ) . max
filled . each do | arrange |
arrange . each do | arranged |
print arranged . ljust ( element2 + 5 )
2024-04-11 21:51:53 +09:00
end
puts
end
end
2024-04-15 22:48:09 +09:00
run ( files )
# ls.rb:13:11: W: [Correctable] Lint/UnusedMethodArgument: Unused method argument - files. If it's necessary, use _ or _files as an argument name to indicate that it won't be used. If it's unnecessary, remove it. You can also write as serve(*) if you want the method to accept any arguments but don't care about them.
# def serve(files)
# ls.rb:27:27: C: [Correctable] Style/SymbolProc: Pass &:size as an argument to map instead of a block.
# array_size = sliced.map { |array| array.size }.max
# ^^^^^^^^^^^^^^^^^^^^^^
# ls.rb:34:1: C: Metrics/AbcSize: Assignment Branch Condition size for arranged is too high. [<5, 20, 6> 21.47/17]
# def arranged(filled) ...
# ^^^^^^^^^^^^^^^^^^^^
# ls.rb:34:1: C: Metrics/MethodLength: Method has too many lines. [14/10]
# def arranged(filled) ...
# ^^^^^^^^^^^^^^^^^^^^
# ls.rb:35:33: C: [Correctable] Style/SymbolProc: Pass &:size as an argument to map instead of a block.
# element2 = filled.flatten.map { |array| array.size }.max
# ^^^^^^^^^^^^^^^^^^^^^^
# ls.rb:43:32: W: Lint/ShadowingOuterLocalVariable: Shadowing outer local variable - arrange.
# arrange.compact.each do |arrange|
# ^^^^^^^