V článok o vlastnostiach OptionParser diskutovali sme o niektorých dôvodoch, ktoré spôsobujú použitie OptionParser v systéme Windows rubín lepšie analyzovať ARGV manuálne príkazy ručne. Teraz je čas začať sa učiť, ako používať OptionParser a jeho funkcie.
Nasledujúci kód tabuľky sa použije pre všetky príklady v tomto návode. Ak chcete vyskúšať ktorýkoľvek z príkladov, jednoducho vložte príklady opts.on blok vedľa komentára TODO. Spustenie programu vytlačí stav možností a ARGV, čo vám umožní preskúmať účinky vašich prepínačov.
#! / usr / bin / env ruby
vyžadovať 'optparse'
vyžadovať 'pp'
# Toto hash bude obsahovať všetky možnosti
# analyzované z príkazového riadku
# OptionParser.
options = {}
optparse = OptionParser.new do | opts |
# TODO: Sem umiestnite možnosti príkazového riadku
# Zobrazí sa obrazovka pomocníka, všetky programy sú
# predpokladá sa, že má túto možnosť.
opts.on ('-h', '--help', 'Display this screen')
dáva voliť
východ
koniec
koniec
# Analyzovať príkazový riadok. Pamätajte, že existujú dve formy
# metódy analýzy. Metóda „parse“ jednoducho analyzuje
# ARGV, zatiaľ čo „parse!“ metóda analyzuje ARGV a odstraňuje
# všetky nájdené možnosti, ako aj všetky parametre pre
# možnosti. Zostáva zoznam súborov na zmenu veľkosti.
optparse.parse!
pp „Možnosti:“, možnosti
pp "ARGV:", ARGV
Jednoduchý prepínač
Jednoduchý prepínač je argument bez voliteľných formulárov alebo parametrov. Účinkom bude jednoducho nastaviť príznak v možnostiach hašiš. Žiadne ďalšie parametre sa neprenesú na na metóda.
options [: simple] = false
opts.on ('-s', '--simple', "Simple argument")
options [: simple] = true
koniec
Prepnúť s povinným parametrom
Prepínače, ktoré majú parameter, musia uviesť iba názov parametra v dlhej forme prepínača. Napríklad, "-f", "--file FILE" znamená, že prepínač -f alebo --file berie jeden parameter s názvom FILE a tento parameter je povinný. Nemôžete použiť -f alebo --file bez toho, aby ste im tiež odovzdali parameter.
možnosti [: mand] = ""
opts.on ('-m', '- povinný SÚBOR', „povinný argument“) do | f |
možnosti [: mand] = f
koniec
Prepnúť s voliteľným parametrom
Parametre prepínača nemusia byť povinné, môžu byť voliteľné. Ak chcete deklarovať parameter prepínača ako voliteľný, vložte jeho názov do zátvoriek v popise prepínača. Napríklad, "--logfile [FILE]" znamená, že parameter FILE je voliteľný. Ak nebude dodaný, program bude predpokladať zdravý štandard, napríklad súbor s názvom log.txt.
V príklade je to idiom a = b || C sa používa. Toto je skratka pre "a = b, ale ak b je nepravdivé alebo nulové, a = c".
options [: opt] = false
opts.on ('-o', '- nepovinný [OPT]', "voliteľný argument") do | f |
možnosti [: opt] = f || "Nič"
koniec
Automaticky previesť na Float
OptionParser dokáže automaticky prevádzať argumenty na niektoré typy. Jedným z týchto typov je plavák. Ak chcete automaticky previesť svoje argumenty na prepínač na Float, odovzdajte Float do na metóda za reťazcami popisu prepínačov.
Automatické konverzie sú užitočné. Nielenže vám ušetria krok prevodu reťazca na požadovaný typ, ale tiež pre vás skontrolujú formát a vyhodia výnimku, ak je formátovaný nesprávne.
možnosti [: float] = 0,0
opts.on ('-f', '- float NUM', Float, "Convert to float") do | f |
možnosti [: float] = f
koniec
Niektoré ďalšie typy, ktoré OptionParser dokáže prevádzať, automaticky zahŕňajú čas a celé číslo.
Zoznamy argumentov
Argumenty je možné interpretovať ako zoznamy. Toto možno vidieť ako konverziu na pole, keď ste prevádzali na Float. Zatiaľ čo váš reťazec volieb môže definovať parameter, ktorý sa má volať „a, b, c“, OptionParser slepo povolí ľubovoľný počet prvkov v zozname. Ak teda potrebujete určitý počet prvkov, nezabudnite sami skontrolovať dĺžku poľa.
možnosti [: zoznam] = []
opts.on ('-l', '--list a, b, c', Array, "Zoznam parametrov") do | l |
možnosti [: zoznam] = l
koniec
Sada argumentov
Niekedy má zmysel obmedziť argumenty iba na niekoľko možností. Napríklad nasledujúci prepínač bude mať iba jeden povinný parameter a parameter musí byť jeden z Áno, žiadny alebo možno. Ak je parameter vôbec niečo iné, vyvolá sa výnimka.
Za týmto účelom odovzdajte zoznam prijateľných parametrov ako symbolov za reťazce popisu prepínača.
možnosti [: set] =: yes
opts.on ('-s', '--set OPT', [: yes,: no,: možná], "Parameters from a set") do | s |
možnosti [: set] = s
koniec
Vylúčené formuláre
Prepínače môžu mať negovanú formu. Prepínač --negated môže mať ten, ktorý má opačný účinok --no-spomalil. Ak to chcete opísať v reťazci popisu prepínača, umiestnite alternatívnu časť do zátvoriek: - [NO-] negovaný. Ak sa stretne s prvým formulárom, true sa odovzdá bloku a nepravda sa zablokuje, ak sa vyskytne druhý formulár.
možnosti [: neg] = false
opts.on ('-n', '- [no-] negated', „Negated forms“) do | n |
možnosti [: neg] = n
koniec