vuonna artikkeli, joka käsittelee OptionParserin ominaisuuksia keskustelimme joistakin syistä, jotka tekevät OptionParserin käytöstä vuonna Rubiini Parempi kuin tarkastella ARGV: tä manuaalisesti jäsentääksesi komennot käsin. Nyt on aika oppia käyttämään OptionParseria ja sen ominaisuuksia.
Seuraavaa kattilalevykoodia käytetään kaikkiin tämän opetusohjelman esimerkkeihin. Voit kokeilla mitä tahansa esimerkkejä yksinkertaisesti laittamalla esimerkit opts.on estää TODO-kommentin vieressä. Ohjelman suorittaminen tulostaa lisävarusteiden tilan ja ARGV: n, jolloin voit tutkia kytkimiesi vaikutuksia.
#! / usr / bin / env ruby
vaatia "optparse"
vaatia 'pp'
# Tämä tiiviste sisältää kaikki vaihtoehdot
# jäsentänyt komentoriviltä
# OptionParser.
vaihtoehdot = {}
optparse = OptionParser.new do | opts |
# TODO: Laita komentorivivalinnat tähän
# Tämä näyttää ohjenäytön, kaikki ohjelmat ovat
# oletettiin olevan tämä vaihtoehto.
opts.on ('-h', '- apu', 'Näytä tämä näyttö') tekevät
antaa valinnat
poistuminen
pää
pää
# Jäsennä komentorivi. Muista, että on olemassa kaksi muotoa
# jäsentämismenetelmästä. 'Parsointimenetelmä' yksinkertaisesti jäsentää
# ARGV, kun taas 'jäsentää!' menetelmä jäsentää ARGV: n ja poistaa
# kaikki siellä olevat vaihtoehdot sekä parametrit
# vaihtoehdot. Jäljellä on luettelo tiedostoista, joiden kokoa tulee muuttaa.
optparse.parse!
pp "Valinnat:", vaihtoehdot
pp "ARGV:", ARGV
Yksinkertainen kytkin
Yksinkertainen kytkin on argumentti, jossa ei ole valinnaisia muotoja tai parametreja. Seurauksena on yksinkertaisesti asettaa lippu vaihtoehtoihin hash. Muita parametreja ei siirretä päällä menetelmä.
asetukset [: yksinkertainen] = väärä
opts.on ('-s', '--simple', "Simple argument") tekevät
asetukset [: yksinkertainen] = totta
pää
Vaihda pakollisella parametrilla
Kytkimet, jotka ottavat parametrin, tarvitsee vain ilmoittaa parametrin nimi kytkimen pitkässä muodossa. Esimerkiksi, "-f", "- arkistoi tiedosto" tarkoittaa, että -f tai - tiedostokytkin ottaa yhden parametrin nimeltä TIEDOSTO, ja tämä parametri on pakollinen. Et voi käyttää kumpaakaan -f tai - tiedostoa antamatta myös parametria.
asetukset [: mand] = ""
opts.on ('-m', '- sitova tiedosto', 'pakollinen argumentti') do | f |
vaihtoehdot [: mand] = f
pää
Vaihda valinnaisella parametrilla
Kytkinparametrien ei tarvitse olla pakollisia, ne voivat olla valinnaisia. Jotta kytkinparametri voidaan ilmoittaa valinnaiseksi, aseta sen nimi hakasuluissa kytkimen kuvaukseen. Esimerkiksi, "--lokkotiedosto [TIEDOSTO]" tarkoittaa, että TIEDOSTO-parametri on valinnainen. Jos sitä ei toimiteta, ohjelma olettaa järkevän oletuksen, kuten log.txt-tiedoston.
Esimerkissä sanonta a = b || C käytetään. Tämä on vain lyhenne sanoista "a = b, mutta jos b on väärä tai nolla, a = c".
asetukset [: opt] = vääriä
opts.on ('-o', '- valinnainen [OPT]', "Valinnainen argumentti") do | f |
vaihtoehdot [: opt] = f || "ei mitään"
pää
Muunna automaattisesti kelluvaksi
OptionParser voi muuntaa argumentit automaattisesti tietyntyyppisiksi. Yksi näistä tyypeistä on kelluva. Jos haluat muuntaa argumentit automaattisesti vaihtaaksi kelluvaksi, siirrä kellua arvoon päällä menetelmä kytkimen kuvausjonon jälkeen.
Automaattiset muunnokset ovat käteviä. He eivät vain säästä sinua vaiheesta muuntaa merkkijono haluttuun tyyppiin, vaan myös tarkistavat muodon puolestasi ja heittävät poikkeuksen, jos se on muotoiltu väärin.
vaihtoehdot [: kellua] = 0,0
opts.on ('-f', '- kellu NUM', kellua, "Muunna kelluvaksi") do | f |
vaihtoehdot [: kellua] = f
pää
Jotkut muut tyypit, jotka OptionParser voi muuntaa, sisältävät automaattisesti ajan ja kokonaisluvun.
Argumentteja
Argumentit voidaan tulkita luetteloiksi. Tämän voidaan nähdä muuntuvan taulukkoon, kun muutit kelluvaksi. Vaikka valintamerkkijono voi määrittää parametrin, jota kutsutaan "a, b, c", OptionParser sallii sokeasti minkä tahansa määrän elementtejä luettelossa. Joten, jos tarvitset tietyn määrän elementtejä, muista tarkistaa taulukon pituus itse.
asetukset [: luettelo] = []
opts.on ('-l', '--lista a, b, c', taulukko, "Parametriluettelo") do | l |
asetukset [: luettelo] = l
pää
Joukko perusteluja
Joskus on järkevää rajoittaa perusteet vaihtamiseen muutamiin vaihtoehtoihin. Esimerkiksi seuraava kytkin ottaa vain yhden pakollisen parametrin, ja parametrin on oltava yksi Joo, ei tai voi olla. Jos parametri on jotain muuta, poikkeus heitetään.
Tätä varten lähetä luettelo hyväksyttävistä parametreista symboleina kytkimen kuvausjonon jälkeen.
asetukset [: asetettu] =: kyllä
opts.on ('-s', '--set OPT', [: kyllä,: ei,: ehkä], "Parametrit joukosta") do | s |
asetukset [: aseta] = s
pää
Negatoidut lomakkeet
Kytkimillä voi olla negatiivinen muoto. Kytkin --negated voi olla sellainen, jolla on päinvastainen vaikutus, nimeltään --no-romutettu. Kuvaile tämä kytkimen kuvausjonoon lisäämällä vaihtoehtoinen osa hakasuluihin: - [NO-] invertoivaan. Jos ensimmäinen lomake kohdataan, tosi siirretään lohkoon ja väärät estetään, jos toinen lomake kohdataan.
asetukset [: neg] = väärä
opts.on ('-n', '- [ei- nollattu', "Negatoidut muodot") eivät | n |
vaihtoehdot [: neg] = n
pää