我已經寫了使用OptionParser優雅地處理命令行輸入代碼。我面臨着兩個主要命中。
- 傳遞空開關' - '不會給出錯誤。當然有些程序認爲這是有效的,但我不應該這樣做。
- 該程序需要兩個強制開關,但它可以接受一個開關而不抱怨!例如
program.ruby -f foo -b bar
是有效的輸入,兩個開關都是:REQUIRED。但是隻提供一個交換機沒有問題,這不是所期望的行爲。
對於我做這個第一種情況:
opts.on('-', /\A-\Z/) do
$stderr.print "Invalid empty switch"
exit 1
end
它工作正常。但是,這是否是正確的做法?
對於第二種情況,我查找了OptionParser.new塊中的解決方案,但找不到一個解決方案。例如
unless options.foo && options.bar
puts "Error."
exit 2
end
在OptionParser.new塊之外做它是正常的方式嗎?
好的,我會在這裏進行更正,因爲我正試圖解決這個問題。爲了讓空開關正常工作,我使用了'opts.on(' - ',/ \ A- \ Z /)',它只有在遇到正則表達式後才進入塊。 – ismail 2012-04-06 00:27:58
這是,我不知道那是怎麼發生的,因爲我在探究問題並不斷完善解決方案時進行了編輯。如何讓主持人重定向/刪除這個? – ismail 2012-04-06 05:32:11
由於另一個沒有答案,所以您可能希望刪除那一個。或者,點擊問題下面的「標誌」鏈接(並在這些評論上方)並相應地繼續。 – 2012-04-06 06:02:57