2010-09-13 61 views
0

我有一個紅寶石斌的一些論點,即-s-c-r(簡稱刮,創建和運行)。現在我想設置一些默認值來創建(在兩種情況下都是'.'),但是如果我在trollop中使用:default,則無法檢查設置的參數是否設置。使用默認值和標誌解析參數

project --scrape 

應相當於

project --scrape . 

如何實現這一目標?

雖然它,我怎麼做

project target 

等同與

project --run target 

回答

0

您可以在Trollop處理它之前修改ARGV。你最好的選擇可能是掃描輸入參數,應用一些基本的轉換,然後運行Trollop。

例如:

args = ARGV.split 
idx = args.index '--scrape' 
if idx != nil 
    if idx < args.length 
     if args[idx + 1][0..1] == '--' 
      args=args[0..idx] + ['.'] + args[idx+1..-1] 
     end 
    else 
     if args[idx + 1][0..1] == '--' 
      args << '.' 
     end 
    end 
end 

該段應檢查--scrape無參數的下面,並在這種情況下添加一個'.'。您可以執行類似的操作來檢查省略的--run參數。完成修改後,請使用args.join(' ')將參數放回到一個字符串中。將此新字符串分配到ARGV,然後將Trollop設置爲鬆散。