diff --git a/ls.rb b/ls.rb index c9e8adb..463db9d 100644 --- a/ls.rb +++ b/ls.rb @@ -39,29 +39,33 @@ def list_filenames filenames = params['a'] ? Dir.glob('*', File::FNM_DOTMATCH) : Dir.glob('*') filenames = filenames.reverse if params['r'] if params['l'] - ownerinfo(filenames) + output(filenames) exit else filenames end end -def ownerinfo(filenames) +def output(filenames) file_blocks(filenames) filenames.each do |file| file_stat = File::Stat.new(file) - print " #{TYPES[file_stat.ftype]}" + print TYPES[file_stat.ftype] permission(file_stat) - print " #{file_stat.nlink}" - print " #{Etc.getpwuid(file_stat.uid).name}" - print " #{Etc.getgrgid(file_stat.gid).name}" - print " #{file_stat.size}".rjust(file_size(filenames)) + printer(file_stat, filenames) timestamp(file_stat) symbolic(file) puts end end +def printer(file_stat, filenames) + print " #{file_stat.nlink}" + print " #{Etc.getpwuid(file_stat.uid).name}" + print " #{Etc.getgrgid(file_stat.gid).name}" + print " #{file_stat.size}".rjust(file_size(filenames)) +end + def symbolic(filenames) if File.lstat(filenames).symlink? print " #{filenames} -> #{File.readlink(filenames)}"