我目前腳本在Python中,但我想嘗試Ruby的幾個原因。我在上週看過很多示例代碼並閱讀了大量文檔。我所關心的一個問題是Ruby中沒有適當的命令行參數解析庫。 Ruby專家,不要生我的氣 - 也許我不知道。這就是我來這裏的原因。紅寶石optparse限制
在Python中,我習慣於使用,這在我看來是完美的(也許是爲了我的需要)。不幸的是,OptionParser
不允許靈活性和的功能。
我專門找在下面的約束現在:
我如何相互排斥的選項列表?對於例如一個名爲
test
的程序非常小的選項列表。usage: test [-h] [-a | -b | -c] [-d] [filename]
我可以編寫一些代碼:
# implement a ---------------------------------------------- opts.on("-a", "--alpha", "implement alpha") do #... end
等。但是,我沒有辦法使
a
,b
和c
互斥,除非我編碼這些排列並做一些錯誤處理。對於例如test -ab #should through an error
在Python,我可以在一個非常簡單的方法做到這一點:
# create an command line argument parser object cmd_line_parser = argparse.ArgumentParser() # create a mutually exclusive group cmd_line_group = cmd_line_parser.add_mutually_exclusive_group()
其次,我沒有配對
-d
的方式與-a
除非我專門爲這個置換編寫代碼。瘋了吧。我必須自己編寫
[OPTION]
列表;除非我對所有可能的輸入排列進行黑匣子測試並將它們映射到黑匣子列表,否則我無法知道自己是否錯誤或正確。此外,必須使用特殊代碼來處理強制性參數。
有一個簡單的使用紅寶石optparse
或其他庫處理這些制約因素?
哇。這是瘋了。史詩。期。 這麼長時間以來我一直在做什麼。太棒了。非常感謝。 – p0lAris 2013-03-19 01:11:57