LoginSignup
0
0

More than 1 year has passed since last update.

[Ruby]オプションの使い方・取得の仕方(OptionParser)

Posted at

最近学んだOptionParserの使い方についてアウトプットします。

まず以下のような課題があるとします。

Rubyでカレンダーを作る

$ calで表示されるカレンダーを作ってみよう。

イメージ

➜ ruby calendar.rb
      2月 2022
 日 月 火  水 木 金 土
       1  2  3  4  5
 6  7  8  9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28

必須要件

  • macに入っているcalコマンドと同じ見た目になっていること
  • Gemは使わないこと
  • -mオプションで月を指定できるようにすること。今年が2022年なら cal -m 6で2022年6月のカレンダーになる。
  • 引数を指定しない場合は、今月・今年のカレンダーが表示される

本題

この課題に対して、どのようにOptionPaserを駆使するか。。
まず、使い方の流れは以下の通りです。

  1. OptionPaser オブジェクト opt を生成する。
  2. オプションを取り扱うブロックをoptに登録する。
  3. opt.parse(ARGV)でコマンドラインを実際にparseする。

各項目を詳しく

1. OptionPaser オブジェクト opt を生成する。
require 'optparse'
opt = OptionParser.new
2. オプションを取り扱うブロックをoptに登録する。
option = {}

opt.on('-m [v]') {|v| option[:m] = v}・・・・# オプションmを作り、0-12までの数字を入れられる仕組み

ここでの[v]は引数を受けつけられることを意味しています。さらに[]をつけてる意味は引数が必須ではないことを示しています。

3. opt.parse(ARGV)でコマンドラインを実際にparseする。
opt.parse!(ARGV)

以上この3段階を経て完成です。簡単に見えますが、調べながら考えてコードを書くのに時間がかかりました。実際にこのコードの返り値を駆使して月の指定をすることができました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0