OptionParser komandrindas opcijas veido Ruby Way

click fraud protection

Ruby ir aprīkots ar jaudīgu un elastīgu rīku, lai parsētu komandrindas opcijas, OptionParser. Uzzinot, kā to izmantot, jūs nekad neatgriezīsities ARGV manuālā izpētē. OptionParser ir vairākas funkcijas, kas padara to diezgan pievilcīgu Ruby programmētājiem. Ja kādreiz esat analizējis iespējas ar roku, izmantojot Ruby vai C, vai izmantojot getoptlong C funkcija, jūs redzēsit, cik laipni gaidītas ir dažas no šīm izmaiņām.

  • OpcijaParser ir SAUSS. Komandrindas slēdzis, tā argumenti, kods, kas jāizmanto, kad tas rodas, un komandrindas slēdža apraksts tikai skriptā ir jāraksta vienreiz. OptionParser automātiski izveidos jums palīdzības ekrānus no šī apraksta, kā arī secinās visu par argumentu no tā apraksta. Piemēram, tas zinās --fails [FILE] opcija nav obligāta un ņem vienu argumentu. To arī zinās - [- nē] -verbozs patiešām ir divas iespējas un pieņems abas formas.
  • OptionParser automātiski konvertēs opcijas noteiktā klasē. Ja opcijai ir vesels skaitlis, tā var pārveidot jebkuru virkni, kas tiek nodota komandrindai, veselu skaitli. Tas samazina zināmu apniku, kas iesaistīts komandrindas opciju parsēšanā.
    instagram viewer
  • Viss ir ļoti ierobežots. Visas iespējas atrodas vienā vietā, un opcijas efekts ir tieši tāds pats kā opcijas definīcijai. Ja iespējas ir jāpievieno, jāmaina vai kāds vienkārši vēlas redzēt, ko viņi dara, ir tikai viena vieta, kur meklēt. Kad komandrinda ir parsēta, rezultātus glabā viena Hash vai OpenStruct.

Pietiek jau, parādiet man kodu

Tātad, šeit ir vienkāršs lietošanas piemērs OpcijaParser. Tas neizmanto nevienu no uzlabotajām funkcijām, tikai pamatus. Ir trīs iespējas, un viena no tām ņem parametru. Visas iespējas ir obligātas. Ir -v / - runīgs un -q / - ātri iespējas, kā arī -l / - logfile failu opcija. Turklāt skripts ņem failu sarakstu, neatkarīgi no opcijām.

 #! / usr / bin / env rubīns

 # Skripts, kas izliekas, ka maina vairāku attēlu lielumu

 pieprasīt “optparse”


 # Šis sajaukums saturēs visas iespējas

 # no komandrindas parsēja

 # OptionParser.

 iespējas = {}


 optparse = OptionParser.jauns darījums | izvēlas |

 # Iestatiet reklāmkarogu, kas redzams augšpusē

 # no palīdzības ekrāna.

 opts.banner = "Lietojums: optparse1.rb [options] file1 file2 ..."


 # Definējiet iespējas un to, ko tās dara

 iespējas [: runīgs] = nepatiess

 opts.on ('-v', '--verbose', 'Output more information') darīt

 iespējas [: runīgs] = patiess

 beigas


 iespējas [: ātri] = nepatiesas

 opts.on ('-q', '--quick', 'ātri izpildiet uzdevumu') darīt

 iespējas [: ātri] = patiesas

 beigas


 opcijas [: logfile] = nulle

 opts.on ('-l', '--logfile FILE', 'Write log to FILE') do | fails |

 opcijas [: logfile] = fails

 beigas


 # 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

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


 liek “Būt verbālam”, ja ir iespējas [: runīgs]

 liek "Būt ātram", ja iespējas [: ātri]

 ievieto "Loging to file # {options [: logfile]}", ja opcijas [: logfile]


 ARGV.katru do | f |

 ievieto tekstu "Attēla izmēra mainīšana Nr. {f} ..."

 gulēt 0,5

 beigas

Kodeksa pārbaude

Lai sāktu ar optiska parse nepieciešama bibliotēka. Atcerieties, ka tas nav a dārgakmens. Tas nāk ar Ruby, tāpēc nav nepieciešams instalēt dārgakmeni vai pieprasīt rubingemas pirms tam optiska parse.

Šajā skriptā ir divi interesanti objekti. Pirmais ir iespējas, atzīts par visaugstāko jomu. Tas ir vienkārši tukšs hash. Kad opcijas ir definētas, tās uz šo jaucējrakstu raksta noklusējuma vērtības. Piemēram, šī skripta noklusējuma darbība ir esiet runīgs, tāpēc iespējas [: runīgs] ir iestatīts uz false. Ja komandrindā tiek parādītas opcijas, tās maina vērtības iespējas lai atspoguļotu to efektu. Piemēram, kad -v / - runīgs ir radusies, tā piešķirs patiesību iespējas [: runīgs].

Otrs interesants objekts ir optiska parse. Tas ir OpcijaParser pats objekts. Veidojot šo objektu, jūs to pārsūtāt. Šis bloks tiek palaists būvniecības laikā un izveidos iekšējo datu struktūru opciju sarakstu un būs gatavs visu parsēt. Šajā blokā notiek visa maģija. Jūs šeit definējat visas iespējas.

Iespēju definēšana

Katra opcija seko vienam un tam pašam modelim. Vispirms nojauciet noklusējuma vērtību hash. Tas notiks, tiklīdz OpcijaParser ir uzbūvēts. Tālāk jūs piezvanīsit ieslēgtsmetode, kas definē pašu iespēju. Šai metodei ir vairākas formas, taču šeit tiek izmantota tikai viena. Citas formas ļauj definēt automātiskus tipa konvertējumus un vērtību kopas, kurām ir ierobežota opcija. Trīs šeit izmantotie argumenti ir īsā forma, garā forma un iespējas apraksts.

ieslēgts metode no garas formas secinās vairākas lietas. Var secināt, ka ir kādi parametri. Ja opcijai ir kādi parametri, tā tos nodos kā parametrus blokam.

Ja komandrindas rindā ir redzama opcija, bloks tika nodots ieslēgts metode tiek palaista. Šeit bloki nedara daudz, tie vienkārši nosaka vērtības opciju jaucē. Varētu darīt vēl vairāk, piemēram, pārbaudīt, vai minētais fails eksistē utt. Ja ir kādas kļūdas, no šiem blokiem var izmest izņēmumus.

Visbeidzot komandrinda tiek parsēta. Tas notiek, piezvanot parsēt! metode uz OpcijaParser objekts. Faktiski šai metodei ir divi veidi, parsēt un parsēt!. Kā norāda versija ar izsaukuma zīmi, tā ir iznīcinoša. Tas ne tikai parsē komandrindu, bet arī noņems visas no tā atrastās iespējas ARGV. Tā ir svarīga lieta, jo pēc opcijām Windows Vista tiks atstāts tikai piegādāto failu saraksts ARGV.

instagram story viewer