Izmantojiet OptionParser, lai parsētu komandas Rubīnā

Iekš raksts, kurā apskatītas OptionParser iespējas mēs apspriedām dažus iemeslus, kuru dēļ Rubīns Lai analizētu, labāk ir skatīties caur ARGV manuāli komandas ar rokām. Tagad ir pienācis laiks sākt mācīties, kā lietot OptionParser un tā funkcijas.

Visiem šīs apmācības piemēriem tiks izmantots šāds katlu plākšņu kods. Lai izmēģinātu kādu no piemēriem, vienkārši ielieciet piemēru opts.on bloķēt blakus TODO komentāram. Programmas palaišana izdrukās opciju stāvokli un ARGV, ļaujot jums izpētīt slēdžu ietekmi.

#! / usr / bin / env rubīns
pieprasīt “optparse”
pieprasīt “pp”
# Šis sajaukums saturēs visas iespējas
# no komandrindas parsēja
# OptionParser.
iespējas = {}
optparse = OptionParser.new do | opts |
# TODO: šeit ievietojiet komandrindas opcijas
# Tiek parādīts palīdzības ekrāns, visas programmas ir
# pieņemts, ka tā ir.
opts.on ('-h', '--help', 'Display this screen') darīt
liek izvēlēties
Izeja
beigas
beigas
# Parsēt komandrindu. Atcerieties, ka ir divas formas
parsēšanas metodes Nr. “Parsēšanas” metode vienkārši tiek parsēta
instagram viewer

# ARGV, savukārt “parsēt!” metode parsē ARGV un noņem
# jebkuras tur atrastās iespējas, kā arī visi parametri
# iespējas. Atlikušais ir failu saraksts, kuriem jāmaina lielums.
optparse.parse!
pp "Opcijas:", opcijas
lpp. "ARGV:", ARGV

Vienkārša pārslēgšana

Vienkāršs slēdzis ir arguments bez izvēles formām vai bez parametriem. Rezultāts būs vienkārši iestatīt karogu opcijās hash. Citi parametri netiks nodoti ieslēgts metode.

iespējas [: vienkāršas] = nepatiesas
opts.on ('-s', '-simple', "Simple argument") dara
iespējas [: vienkāršas] = patiesas
beigas

Pārslēdziet ar obligāto parametru

Slēdžiem, kas ņem parametru, ir jānorāda tikai parametra nosaukums slēdža garā formā. Piemēram, "-f", "--faila fails" nozīmē, ka slēdzis -f vai --file ņem vienu parametru ar nosaukumu FILE, un šis parametrs ir obligāts. Nevar izmantot vai nu -f, ne --file, nepārsniedzot tam arī parametru.

opcijas [: mand] = ""
opts.on ('-m', '- obligāts fails', 'Obligāts arguments') do | f |
iespējas [: mand] = f
beigas

Pārslēdziet ar izvēles parametru

Slēdžu parametriem nav jābūt obligātiem, tie var būt neobligāti. Lai deklarētu slēdža parametru pēc izvēles, slēdža aprakstā ielieciet tā nosaukumu iekavās. Piemēram, "--logfile [FILE]" nozīmē, ka parametrs FILE nav obligāts. Ja programma netiek piegādāta, programma uzņemas veselīgu noklusējumu, piemēram, failu ar nosaukumu log.txt.

Piemērā idioma a = b || c tiek izmantots. Tas ir tikai saīsinājums “a = b”, bet, ja b ir nepatiess vai nulle, a = c ”.

iespējas [: opt] = nepatiesa
opts.on ('-o', '- izvēles (OPT)', "Izvēles arguments") do | f |
opcijas [: opt] = f || "nekas"
beigas

Automātiski konvertēt uz pludiņu

OptionParser var automātiski konvertēt argumentus uz dažiem tipiem. Viens no šiem veidiem ir pludiņš. Lai automātiski konvertētu savus argumentus uz pāreju uz pludiņu, pārejiet uz pludiņu uz ieslēgts metode pēc jūsu slēdža apraksta virknēm.

Automātiska konvertēšana ir ērta. Viņi ne tikai ietaupīs virknes konvertēšanas vēlamajā tipā soli, bet arī pārbaudīs jūsu formātu un izmetīs izņēmumu, ja tā būs formatēta nepareizi.

opcijas [: pludiņš] = 0,0
opts.on ('-f', '- float NUM', float, "Convert to float") do | f |
opcijas [: peldēt] = f
beigas

Daži citi veidi, kurus OptionParser var pārveidot, lai automātiski iekļautu laiku un veselu skaitli.

Argumentu saraksti

Argumentus var interpretēt kā sarakstus. To var uzskatīt par konvertēšanu masīvā, kad konvertējāt uz Float. Kamēr jūsu opciju virkne var definēt parametru, kas tiek saukts par "a, b, c", OptionParser akli atļaus jebkuru elementu skaitu sarakstā. Tātad, ja jums ir nepieciešams noteikts skaits elementu, noteikti pārbaudiet masīva garumu pats.

opcijas [: saraksts] = []
opts.on ('-l', '- saraksts a, b, c', Masīvs, "Parametru saraksts") do | l |
opcijas [: saraksts] = l
beigas

Argumentu komplekts

Dažreiz ir jēga ierobežot argumentus ar pāreju uz dažām izvēlēm. Piemēram, šim slēdzim būs nepieciešams tikai viens obligāts parametrs, un parametram jābūt vienam no , vai var būt. Ja parametrs vispār ir kaut kas cits, tiks izmantots izņēmums.

Lai to izdarītu, pēc slēdža apraksta virknēm nododiet pieņemamo parametru sarakstu kā simbolu.

iespējas [: iestatīt] =: jā
opts.on ('-s', '--set OPT', [: jā,: nē,: varbūt], "Parametri no kopas") do | s |
iespējas [: iestatīt] = s
beigas

Negatīvas formas

Slēdžiem var būt negatīva forma. Slēdzis - atsaukts var būt tāds, kam ir pretējs efekts, ko sauc par - nenegatīvs. Lai aprakstītu to slēdža apraksta virknē, ielieciet alternatīvo daļu iekavās: - [nē] noliedz. Ja rodas pirmā veidlapa, taisnība tiks nodota bloķēšanai, un nepatiesa tiks bloķēta, ja tiks parādīta otrā forma.

iespējas [: neg] = nepatiesa
opts.on ('-n', '- [bez-] noliegts', "negatīvas formas") do | n |
iespējas [: neg] = n
beigas