Jei norite išanalizuoti komandas „Ruby“, naudokite „OptionParser“

click fraud protection

Viduje straipsnis, kuriame aptariamos „OptionParser“ funkcijos aptarėme kai kurias priežastis, dėl kurių naudojant „OptionParser“ galima Rubinas geriau analizuoti ARGV rankiniu būdu komandos ranka. Dabar atėjo laikas mokytis naudotis „OptionParser“ ir jo funkcijomis.

Toliau pateiktas katilo plokštelės kodas bus naudojamas visiems šio vadovo pavyzdžiams. Norėdami išbandyti bet kurį iš pavyzdžių, tiesiog įdėkite pavyzdį pasirenka.on blokas šalia TODO komentaro. Vykdydami programą atsispausdinsite esamų variantų ir ARGV parinkčių būseną, leisdami ištirti savo jungiklių poveikį.

#! / usr / bin / env rubinas
reikalauti „optparse“
reikalauti 'pp'
# Šis maišas išlaikys visas parinktis
# parsidavė iš komandinės eilutės
# „OptionParser“.
parinktys = {}
optparse = OptionParser.new padaryti | pasirenka |
# TODO: pateikite komandų eilutės parinktis čia
# Rodomas žinyno ekranas, visos programos yra
# manoma, kad turi šią parinktį.
opts.on ('-h', '--help', 'Rodyti šį ekraną') daro
pateikia pasirinkimus
išėjimas
galas
instagram viewer

galas
# Analizuokite komandinę eilutę. Atminkite, kad yra dvi formos
analizės metodo Nr. „Parsidavimo“ metodas paprasčiausiai analizuojamas
# ARGV, o „parsiduoti!“ metodas analizuoja ARGV ir pašalina
# bet kokios ten rastos parinktys, taip pat bet kokie parametrai
# parinktys. Liko failų, kurių dydį reikia pakeisti, sąrašas.
optparse.parse!
pp „Parinktys:“, parinktys
pp „ARGV:“, ARGV

Paprastas jungiklis

Paprastas jungiklis yra argumentas, kuriame nėra pasirenkamų formų ar parametrų. Rezultatas bus tiesiog nustatyti vėliavą parinkčių maišos. Jokie kiti parametrai nebus perduoti apie metodas.

parinktys [: paprasta] = klaidinga
opts.on ('-ai', '--paprastas', 'paprastas argumentas') daro
parinktys [: paprasta] = teisinga
galas

Perjunkite su privalomu parametru

Jungikliams, kurie naudoja parametrą, ilgą jungiklio pavidalą reikia nurodyti tik parametro pavadinimą. Pavyzdžiui, „-f“, „- failo failas“ reiškia, kad -f arba --file jungiklis užima vieną parametrą, vadinamą FILE, ir šis parametras yra privalomas. Negalite naudoti nei -f, nei --file, neperduodant jam parametro.

parinktys [: mand] = ""
opts.on ('-m', '- privalomasis failas', 'Privalomas argumentas') do | f |
parinktys [: mand] = f
galas

Perjungti pasirenkamąjį parametrą

Jungiklio parametrai nebūtinai turi būti privalomi, jie gali būti neprivalomi. Norėdami paskelbti jungiklio parametrą neprivalomu, įdėkite jo pavadinimą skliausteliuose į jungiklio aprašą. Pavyzdžiui, „--logfile [failas]“ reiškia, kad parametras Failas yra neprivalomas. Jei nepateikiama, programa prisiims sunkius numatytuosius parametrus, pvz., Failą, pavadintą log.txt.

Pavyzdyje idioma a = b || c yra naudojamas. Tai yra tiesiog santrumpa „a = b“, bet jei b yra klaidinga arba nulis, a = c “.

parinktys [: opt] = klaidinga
opts.on ('-o', '- pasirinktinis [OPT]', "Neprivalomas argumentas") do | f |
parinktys [: opt] = f || "nieko"
galas

Automatiškai konvertuoti į „Float“

„OptionParser“ gali automatiškai konvertuoti argumentus į kai kuriuos tipus. Viena iš šių rūšių yra plūdinė. Norėdami automatiškai konvertuoti savo argumentus į perjungimą į „Float“, perduokite „Float“ į apie metodas po jūsų jungiklio aprašymo eilutėmis.

Automatinės konversijos yra patogios. Jie ne tik sutaupys eilutės konvertavimo į norimą tipą žingsnį, bet ir patikrins jūsų formatą bei pateiks išimtį, jei ji suformatuota neteisingai.

parinktys [: plūduriuoti] = 0,0
opts.on ('-f', '- plūdis NUM', plūduriuojantis, „Konvertuoti į plūdrį“) do | f |
parinktys [: plūduriuoti] = f
galas

Kai kurie kiti tipai, kuriuos „OptionParser“ gali konvertuoti, kad automatiškai įtrauktų laiką ir sveikąjį skaičių.

Argumentų sąrašai

Argumentai gali būti aiškinami kaip sąrašai. Tai gali būti vertinama kaip konvertavimas į masyvą, kai jūs konvertavote į „Float“. Nors jūsų pasirinkimo eilutė gali apibrėžti parametrą, kuris bus vadinamas „a, b, c“, „OptionParser“ aklai leis naudoti bet kokį sąrašą elementų. Taigi, jei jums reikia konkretaus skaičiaus elementų, būtinai patikrinkite masyvo ilgį patys.

parinktys [: sąrašas] = []
opts.on ('-l', '- a, b, c', masyvas, "Parametrų sąrašas") do | l |
parinktys [: sąrašas] = l
galas

Argumentų rinkinys

Kartais prasminga apsiriboti argumentais ir pereiti prie kelių pasirinkimų. Pavyzdžiui, šis jungiklis užtruks tik vieną privalomą parametrą, o parametras turi būti vienas iš taip, ne arba gal būt. Jei parametras yra visai kas kita, bus taikoma išimtis.

Norėdami tai padaryti, po jungiklio aprašymo eilutėmis perduokite priimtinų parametrų sąrašą kaip simbolius.

parinktys [: nustatyti] =: taip
opts.on ('-s', '--set OPT', [: taip,: ne,: galbūt], "Parametrai iš rinkinio") padaryti | s |
parinktys [: nustatyti] = s
galas

Neigiamos formos

Jungikliai gali turėti neigiamą formą. Jungiklis - susietas gali turėti priešingą efektą, vadinamas - neneigiama. Norėdami tai apibūdinti jungiklio aprašymo eilutėje, alternatyvią dalį pateikite skliausteliuose: - [ne-] paneigė. Jei aptinkama pirmoji forma, tiesa bus perduota blokui, o klaidinga bus blokuojama, jei aptiksite antrąją formą.

parinktys [: neg] = klaidinga
opts.on ('-n', '- [ne-] neigiama', "neigiamos formos") padaryti | n |
parinktys [: neg] = n
galas
instagram story viewer