【Rubyでlsコマンド作成!(ロジック編)】
現在、プログラミングを学んでいるフィヨルドブートキャンプでlsコマンドを作成するという課題が出たので学んだ内容をアウトプットしていきます。※lsコマンドをどこまで再現するかの条件あり(a,r,lのオプションは実装)
lsコマンドとは?
まずlsコマンドとは、簡単に説明するとファイルを一覧表示する他、オプションを使ってファイルの詳細情報を表示できたりするコマンド。
lsコマンドを作成する上でのロジック
自分の場合、ロジックは下記の通り
・まず、if
文でオプションa
のときに取得するファイルデータとそれ以外のオプションのファイルデータを条件分岐
・その後、オプションr
とそれ以外のオプションのファイルデータを条件分岐
file_names = if options[:a] Dir.glob('*', File::FNM_DOTMATCH) else Dir.glob('*') end if options[:r] file_names.sort.reverse else file_names.sort end
・ここからl
オプションを実装。表示する各項目をメソッドに入れて、最後に項目をまとめてprint
・次にl
オプション以外のオプションを実装。l
オプション以外は表示条件がほぼ同じ。
・最後にopt.on
で各オプションを設定して、l
オプションまたはそれ以外のオプションで条件分岐させた。
options = {} OptionParser.new do |opt| opt.on('-r') { |r| options[:r] = r } opt.on('-a') { |a| options[:a] = a } opt.on('-l') { |l| options[:l] = l } opt.parse!(ARGV) end options[:l] ? output_with_l_options(options) : output_without_l_options(options)
課題提出後、完成した他の生徒さんのコードを読ませていただいたが、それぞれロジックが違って面白かった😄
同じlsコマンドでも作者が違うと作成する過程が違うなんてRuby面白い!!!