Na analyzovanie príkazov v Ruby použite OptionParser

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
instagram viewer

# 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
instagram story viewer