הכותרת קצת מטעה, אבל כאשר כותבים תוכנות בעיקר בעולם היוניקס, נהוג לתת אפשרויות בשורת הפקודה לתכנה. הבעיה היא כיצד ניתן לנתח את מה שעובר, ולשם כך רובי מגיעה עם ספרייה פשוטה בשם optparse המגיעה כספרייה סטנדרטית ברובי.
העבודה בה מאד פשוטה ומחביאה הרבה מאוד כוח נסתר. תכנית מאוד פשוטה המשתמשת בה, תראה כזו:
#!/usr/bin/env ruby
require 'optparse'
VERSION = '99.1b'
# default values for options ...
options = { :path => '', :number => 0, :uri => nil}
parse = OptionParser.new do|opt|
opt.banner = 'Usage: my_app.rb [option] [option]'
opt.on('-v', '--version', 'Display the program version') do
puts "my_app.rb v#{VERSION}"
end
opt.on('-p PATH', '--path=PATH', 'What path to use ?') do |path|
option[:path] = path
end
opt.on('-n=NUM', '--number NUM', Fixnum, 'Use numbers only') do |num|
option[:number] = num
end
opt.on('--uri URI', 'Mandatory field') do |uri|
option[:uri] = uri
end
opt.on('-h', '--help', 'Display this screen') do
puts opt
exit
end
end
begin
parse.parse!
raise OptionParser::MissingArgument if options[:uri].nil? # mandatory fields
rescue => e
$stderr.puts "You did not supply proper values: #{e.message}"
end
ההדגמה מבצעת מספר דברים אשר מראים את הכוח העצום של הספרייה ואת רוב היכולות שלה. אני מציג כיצד ניתן לקבל פרמטר צורך בערך. אני מציג כיצד ניתן להגיד איך לפרש פרמטר מול ערך (כלומר המפריד הוא רווח, הסימן = וכו'), אני מראה כיצד מציגים עזרה על הפרמטרים השונים, אני מציג כיצד להכריח את המפרש לקבל מספר שלם, ואני אפילו מתעסק במצב בו יש פרמטר שהוא חובה, אבל לא קיבלנו אותו.