lsコマンド# 17
今日やる事
- lsコマンドの修正
勉強した事
- ターミナルのサイズを [rows, columns] で返せる。
require 'io/console' rows, columns = $stdout.winsize puts "Your screen is #{columns} wide and #{rows} tall" # (m・_・bp) 8:26 ~/Desktop/vsnote2.0/kadai/wc % ruby memo2.rb # Your screen is 175 wide and 9 tall # (m・_・bp) 14:59 ~/Desktop/vsnote2.0/kadai/wc % ruby memo2.rb # Your screen is 145 wide and 9 tall # (m・_・bp) 14:59 ~/Desktop/vsnote2.0/kadai/wc % ruby memo2.rb # Your screen is 171 wide and 9 tall
lsコマンドの課題でこれを反映させようと思うとたくさん変更しなきゃいけない箇所があるから悩みどころ。。
ハッシュ使った
def types_of_files(stat) type_ary = [] file_mode = stat.ftype file_type = { "file":"-", "directory":"d" }[file_mode.to_sym] type_ary << file_type end
stat = File::Stat.new($0) stat = stat.mode.to_s(8) a = { "7":"rwx", "6":"rw-", "5":"r-x", "4":"r--", "3":"-wx", "2":"-w-", "1":"--x", "0":"---", }[stat[3].to_sym] p stat p a # (m・_・bp) 16:33 ~/Desktop/vsnote2.0/kadai/wc % ruby memo.rb # "100644" # "rw-"
- よし、これで3項演算子使わずにハッシュで動かせそうだ!
注意
- 下記のコードをlsコマンドの課題に当てはめても動きません。もし参考にされている方がいれば、注意してください〜
stat = File::Stat.new($0) stat = stat.mode.to_s(8) a = { "7":"rwx", "6":"rw-", "5":"r-x", "4":"r--", "3":"-wx", "2":"-w-", "1":"--x", "0":"---", } p stat b =[] p a[stat[3].to_sym] p a[stat[4].to_sym] p a[stat[5].to_sym] b << a[stat[3].to_sym] b << a[stat[4].to_sym] b << a[stat[5].to_sym] p b.join("") # (m・_・bp) 16:45 ~/Desktop/vsnote2.0/kadai/wc % ruby memo.rb # "100644" # "rw-" # "r--" # "r--" # "rw-r--r--"