U članak koji govori o značajkama OptionParsera razgovarali smo o nekim razlozima zbog kojih je korištenje OptionParser u sustavu Rubin poželjno je ručno pregledati ARGV naredbe ručno. Sada je vrijeme da se spustite na učenje korištenja OptionParser i njegovih značajki.
Sljedeći kôd kotlovske ploče upotrijebit će se za sve primjere u ovom vodiču. Da biste isprobali bilo koji od primjera, jednostavno stavite primjer opts.on blok pokraj komentara TODO. Pokretanje programa ispisat će stanje opcija koje ima i ARGV, omogućujući vam da ispitate učinke svojih sklopki.
#! / usr / bin / env rubin
zahtijevati 'optparse'
zahtijevati 'pp'
# Ovaj hash sadržavat će sve mogućnosti
# raščlanjeno iz naredbenog retka
# OptionParser.
opcije = {}
optparse = OptionParser.new do | opts |
# TODO: Ovdje stavite opcije naredbenog retka
# Ovo prikazuje zaslon pomoći, svi su programi
# pretpostavlja se da ima ovu opciju.
opts.on ('-h', '--help', 'Prikaži ovaj ekran')
stavlja opts
Izlaz
kraj
kraj
# Analizirajte naredbeni redak. Zapamtite da postoje dva oblika
# metode raščlanjivanja. Metoda 'raščlanjivanje' jednostavno analizira
# ARGV, dok je 'raščlanjivanje!' metoda raščlanjuje ARGV i uklanja
# bilo koje tamo pronađene opcije, kao i bilo koji parametar za
# mogućnosti. Preostalo je popis datoteka za promjenu veličine.
optparse.parse!
pp "Opcije:", opcije
pp "ARGV:", ARGV
Jednostavno prebacivanje
Jednostavna sklopka je argument bez neobaveznih oblika ili bez parametara. Učinak će biti jednostavno postavljanje zastave u opcijama paprikaš. Nijedan drugi parametar neće biti proslijeđen na na metoda.
opcije [: simple] = false
opts.on ('-s', '--simple', "Simple argument")
opcije [: simple] = true
kraj
Prebacite se sa obveznim parametrom
Prekidači koji uzimaju parametar trebaju samo navesti naziv parametra u dugom obliku prekidača. Na primjer, "-f", "--file FILE" znači da prekidač -f ili --file uzima jedan parametar koji se naziva FILE, a taj je parametar obavezan. Ne možete koristiti ni -f ili --file, a da pritom ne zadate parametar.
opcije [: mand] = ""
opts.on ('-m', '--obvezan FILE', "Obvezan argument") do | f |
opcije [: mand] = f
kraj
Prebacite se s opcijskim parametrom
Parametri prekidača ne moraju biti obavezni, mogu biti opcionalni. Da biste parametar prekidača proglasili fakultativnim, u opisu prekidača stavite njegovo ime u zagrade. Na primjer, "--logfile [FILE]" znači da je parametar FILE izborni. Ako nije isporučen, program će pretpostaviti zdravi standard, kao što je datoteka zvana log.txt.
U primjeru idiom a = b || c koristi se. Ovo je samo kratica za "a = b, ali ako je b netočno ili nil, a = c".
opcije [: opt] = netočno
opts.on ('-o', '--optional [OPT]', "neobavezni argument") | | | |
opcije [: opt] = f || "ništa"
kraj
Automatski Pretvori u Float
OptionParser može automatski pretvoriti argument u neke vrste. Jedna od tih vrsta je Float. Da biste svoje argumente automatski pretvorili u prekidač na Float, proslijedite Float u na metoda nakon niza opisa opisa.
Automatske pretvorbe su pri ruci. Ne samo da vam spremaju korak pretvorbe niza u željenu vrstu, već i provjeravaju format te će izbaciti izuzetak ako je nepravilno formatiran.
opcije [: float] = 0.0
opts.on ('-f', '--float NUM', Float, "Pretvori u plutaju") do | f |
opcije [: float] = f
kraj
Neke druge vrste koje OptionParser može pretvoriti u automatsko uključivanje vremena i cijelog broja.
Popisi argumenata
Argumenti se mogu tumačiti kao popisi. To se može vidjeti kao pretvaranje u niz, kao što ste pretvorili u Float. Dok vaš niz opcija može definirati parametar koji će se zvati "a, b, c", OptionParser će slijepo dopustiti bilo koji broj elemenata na popisu. Ako vam je potreban određeni broj elemenata, obavezno sami provjerite duljinu polja.
opcije [: list] = []
opts.on ('-l', '--list a, b, c', Niz, "Popis parametara") do | l |
opcije [: list] = l
kraj
Skup argumenata
Ponekad ima smisla ograničiti argumente na prelazak na nekoliko izbora. Na primjer, sljedeća sklopka uzima samo jedan obavezni parametar, a parametar mora biti jedan od Da, Ne ili može biti. Ako je parametar uopće išta drugo, bit će izuzeta iznimka.
Da biste to učinili, proslijedite popis prihvatljivih parametara kao simbola nakon nizova opisa prekidača.
opcije [: set] =: da
opts.on ('-s', '--set OPT', [: da,: ne,: možda], "Parametri iz skupa") do | s |
opcije [: set] = s
kraj
Negirani oblici
Prekidači mogu imati negativan oblik. Prekidač --negated može imati onaj koji ima suprotan učinak, nazvan --no-negira. Da biste to opisali u nizu opisa prekidača, alternativni dio stavite u zagrade: - [no-] negira. Ako se susretne prvi obrazac, true će biti proslijeđen u blok, a false će biti blokiran ako se pojavi drugi obrazac.
opcije [: neg] = netočno
opts.on ('-n', '- [no-] negiran', "Negirani obrasci") do | n |
opcije [: neg] = n
kraj