Käytä OptionParser -komentoja kommentoimaan Ruby-komentoja

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

# 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ää