【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面白い!!!