V článek o vlastnostech OptionParser diskutovali jsme o některých důvodech, které způsobují používání OptionParser v Rubín lépe analyzovat ARGV ručně příkazy ručně. Nyní je čas začít se učit, jak používat OptionParser a jeho funkce.
Následující kód kotlové desky bude použit pro všechny příklady v tomto tutoriálu. Chcete-li vyzkoušet některý z příkladů, jednoduše vložte příklady opts.on blok vedle komentáře TODO. Spuštění programu vytiskne stav možností a ARGV, což vám umožní prozkoumat účinky vašich přepínačů.
#! / usr / bin / env ruby
vyžadují 'optparse'
vyžadovat 'pp'
# Tento hash bude obsahovat všechny možnosti
# analyzováno z příkazového řádku uživatelem
# OptionParser.
options = {}
optparse = OptionParser.new do | opts |
# TODO: Sem vložte možnosti příkazového řádku
# Zobrazí se obrazovka nápovědy, všechny programy jsou
# předpokládá, že má tuto možnost.
opts.on ('-h', '--help', 'Display this screen')
staví se
výstup
konec
konec
# Analyzovat příkazový řádek. Pamatujte, že existují dvě formy
# metody analýzy. Metoda „parse“ jednoduše analyzuje
# ARGV, zatímco 'parse!' metoda analyzuje ARGV a odstraní
# všechny nalezené možnosti a parametry pro
# možnosti. Zbývá seznam souborů pro změnu velikosti.
optparse.parse!
pp "Možnosti:", možnosti
pp "ARGV:", ARGV
Jednoduchý přepínač
Jednoduchý přepínač je argument bez volitelných formulářů nebo bez parametrů. Účinkem bude jednoduše nastavit příznak v možnostech hash. Žádné další parametry nebudou předány do na metoda.
options [: simple] = false
opts.on ('-s', '--simple', "Simple argument") ano
options [: simple] = true
konec
Přepněte pomocí povinného parametru
Přepínače, které berou parametr, musí pouze uvést název parametru v dlouhé formě přepínače. Například, "-f", "--file FILE" znamená, že přepínač -f nebo --file vezme jediný parametr s názvem FILE a tento parametr je povinný. Nemůžete použít -f nebo --file, aniž byste mu předali parametr.
možnosti [: mand] = ""
opts.on ('-m', '- povinný SOUBOR', "povinný argument") do | f |
možnosti [: mand] = f
konec
Přepnout s volitelným parametrem
Parametry přepínače nemusí být povinné, mohou být volitelné. Chcete-li prohlásit parametr přepínače za nepovinný, vložte jeho název do závorek v popisu přepínače. Například, "--logfile [FILE]" znamená, že parametr FILE je volitelný. Pokud není dodán, program bude předpokládat zdravý výchozí stav, například soubor s názvem log.txt.
V příkladu je to idiom a = b || C se používá. Toto je zkratka pro "a = b, ale pokud b je nepravdivé nebo nulové, a = c".
options [: opt] = false
opts.on ('-o', '--optional [OPT]', "Optional Argument") do | f |
možnosti [: opt] = f || "nic"
konec
Automaticky převést na Float
OptionParser může automaticky převádět argumenty na některé typy. Jedním z těchto typů je Float. Chcete-li automaticky převést argumenty na přepínač na Float, předejte Float do na metoda za řetězcem popisu přepínače.
Automatické převody jsou užitečné. Nejenom, že vás uloží krok převodu řetězce na požadovaný typ, ale také zkontrolují formát za vás a vyhodí výjimku, pokud je formátován nesprávně.
možnosti [: float] = 0,0
opts.on ('-f', '--float NUM', Float, "Převést na float") do | f |
možnosti [: float] = f
konec
Některé jiné typy, které OptionParser dokáže převést, aby automaticky zahrnovaly čas a celé číslo.
Seznamy argumentů
Argumenty lze interpretovat jako seznamy. To lze považovat za převod na pole, když jste převedli na Float. Zatímco váš řetězec voleb může definovat parametr, který má být nazýván „a, b, c“, OptionParser slepě povolí libovolný počet prvků v seznamu. Pokud tedy potřebujete určitý počet prvků, nezapomeňte sami zkontrolovat délku pole.
možnosti [: seznam] = []
opts.on ('-l', '--list a, b, c', Array, "Seznam parametrů") do | l |
možnosti [: seznam] = l
konec
Sada argumentů
Někdy má smysl omezit argumenty na přechod na několik možností. Například následující přepínač vezme pouze jeden povinný parametr a parametr musí být jeden z Ano, Ne nebo možná. Pokud je parametr vůbec něco jiného, vyvolá se výjimka.
To provedete předáním seznamu přijatelných parametrů jako symbolů za řetězce popisu přepínače.
možnosti [: set] =: yes
opts.on ('-s', '--set OPT', [: yes,: no,: možná], "Parametry ze sady") do | s |
možnosti [: set] = s
konec
Negativní formuláře
Spínače mohou mít negovanou podobu. Vypínač --negated může mít ten, který má opačný efekt --no-negated. Chcete-li to popsat v řetězci popisu přepínače, umístěte alternativní část do závorek: - [ne-] negováno. Pokud se setkáte s prvním formulářem, true bude předán do bloku a false bude blokován, pokud se objeví druhý formulář.
options [: neg] = false
opts.on ('-n', '- [no-] negated', „Negated forms“) do | n |
možnosti [: neg] = n
konec