Az OptionParser parancssori opciói a Ruby Way

A Ruby egy erőteljes és rugalmas eszközzel van felszerelve, amely lehetővé teszi a parancssori lehetőségek elemzését, az OptionParser alkalmazást. Miután megtanulta ennek használatát, soha nem térhet vissza az ARGV kézi áttekintéséhez. Az OptionParser számos olyan funkcióval rendelkezik, amelyek miatt ez nagyon vonzó a Ruby programozók számára. Ha valaha is elemezte a lehetőségeket kézzel, Ruby vagy C formátumban, vagy a getoptlong C funkció, látni fogja, mennyire örülnek ezeknek a változásoknak.

  • Az OptionParser az SZÁRAZ. Csak egyszer kell beírnia a parancssori kapcsolót, annak argumentumait, a futtatáskor használt kódot, és a parancssori kapcsoló leírását a szkriptben. Az OptionParser automatikusan létrehoz egy súgóképernyőt a leírásból, és mindent levezet az argumentumról a leírásból. Például tudni fogja --fájl [FÁJL] opció választható, és egyetlen argumentumot vesz fel. Azt is tudni fogja - [- no] -verbose valójában két lehetőség, és mindkét formát elfogadni fogja.
  • Az OptionParser automatikusan konvertálja az opciókat egy adott osztályra.
    instagram viewer
    Ha az opció egész értéket vesz fel, akkor a parancssorban átadott karakterláncot egészbe konvertálhatja. Ez csökkenti a parancssori beállítások elemzésében részt vevő egyes unalmakat.
  • Minden nagyon zárt. Az összes lehetőség ugyanabban a helyen található, és az opció hatása az opció meghatározása mellett jobb. Ha opciókat kell hozzáadni, megváltoztatni, vagy ha valaki egyszerűen csak látni akarja, mit csinál, akkor csak egy hely van. Miután a parancssort elemezte, egyetlen Hash vagy OpenStruct tárolja az eredményeket.

Már elég, mutasson nekem valamilyen kódot

Tehát itt van egy egyszerű példa a felhasználásra OptionParser. Nem használja a fejlett funkciókat, csak az alapokat. Három lehetőség van, és az egyik paramétert vesz. Az összes lehetőség kötelező. Vannak a -v / - bőbeszédű és -q / - gyorsan lehetőségeket, valamint a -l / - naplófájl FÁJL választási lehetőség. Ezenkívül a szkript a lehetőségektől független fájlok listáját veszi.

 #! / usr / bin / env rubin

 # Szkript, amely úgy állít be, hogy számos képet átméretez

 „optparse” megkövetelése


 # Ez a kivonat tartalmazza az összes lehetőséget

 # elemzi a parancssorból

 # OptionParser.

 opciók = {}


 optparse = OptionParser.new do | opts |

 # Állítson be egy tetején megjelenő szalaghirdetést

 # a súgó képernyőn.

 opts.banner = "Használat: optparse1.rb [options] file1 file2 ..."


 # Határozza meg a lehetőségeket és mit csinál

 beállítások [: szóbeli] = hamis

 opts.on ('-v', '--verbose', 'További információ kimenete')

 lehetőségek [: szóbeli] = igaz

 vég


 lehetőségek [: gyors] = hamis

 opts.on ('-q', '--quick', 'Végrehajtja a feladatot gyorsan')

 lehetőségek [: gyors] = igaz

 vég


 options [: logfile] = nulla

 opts.on ('-l', '--logfile FILE', 'Napló írása fájlba') do | fájl |

 options [: logfile] = fájl

 vég


 # Megjeleníti a súgóképernyőt, az összes program

 # feltételezte, hogy rendelkezik ezzel a lehetőséggel.

 opts.on ('-h', '--help', 'Képernyő megjelenítése')

 választja

 kijárat

 vég

 vég


 # Elemzés a parancssorból. Ne feledje, hogy két formája van

 az elemzési módszer #. A „elemzés” módszer egyszerűen elemzi

 # ARGV, míg a 'pars!' módszer elemzi az ARGV-t és eltávolítja

 # az ott található lehetőségek, valamint a paraméterek

 # a lehetőségeket. A hátra van az átméretezendő fájlok listája.

 optparse.parse!


 a következőt teszi: "Széles lenni", ha a lehetőségek [: verbose]

 a következőt adja: "Gyors lenni", ha a lehetőségek [: gyors]

 "Naplózás fájlba # {options [: logfile]}", ha a beállítások [: logfile]


 ARGV.milyen módon | f |

 "A kép átméretezése # {f} ..."

 aludni 0,5

 vég

A kódex vizsgálata

Először a optparse könyvtár szükséges. Ne feledje, hogy ez nem egy drágakő. A Ruby jön, így nincs szükség drágakő telepítésére vagy igénylésére rubygems előtt optparse.

Két érdekes objektum van ebben a szkriptben. Az első az opciók, amelyet a legszélesebb körben deklaráltak. Ez egy egyszerű üres hash. Amikor az opciókat definiálják, akkor alapértelmezett értékeiket írják erre a kivonatra. Például az alapértelmezett viselkedés a szkript számára nem legyen szó, tehát opciók [: verbose] hamisra van állítva. Ha a parancssorban találkozik opciókkal, akkor az értékeket megváltoztatja a opciók hogy tükrözzék hatásukat. Például mikor -v / - bőbeszédű találkozik, akkor igaz lesz hozzá opciók [: verbose].

A második érdekes tárgy az optparse. Ez a OptionParser magát a tárgyat. Amikor felépíti ezt az objektumot, átadja egy blokknak. Ez a blokk az építés során fut, és összeállítja a belső adatstruktúrában található lehetőségek listáját, és készen áll mindent az elemzésre. Ebben a blokkban történik minden varázslat. Itt határozza meg az összes lehetőséget.

Opciók meghatározása

Minden opció ugyanazt a mintát követi. Először az alapértelmezett értéket írja a hash-ba. Ez történik, amint a OptionParser épül. Ezután felhívja a továbbeljárás, amely meghatározza magát az opciót. Ennek a módszernek számos formája létezik, de csak egyet használunk itt. A többi forma lehetővé teszi az automatikus típusú konverziók és értékkészletek meghatározását, amelyekre az opció korlátozott. Az itt alkalmazott három argumentum a rövid forma, a hosszú forma és az opció leírása.

Az tovább A módszer számos dolgot levezet a hosszú formából. Az egyik dolog következtetni lehet bármilyen paraméter jelenléte. Ha vannak paraméterek az opción, akkor azokat paraméterként továbbítja a blokkhoz.

Ha a parancssorban találkozik egy opcióval, akkor a blokk átkerült a tovább A módszer fut. Itt a blokkok nem sokat csinálnak, csak értékeket állítanak be az options hash-ban. Többet lehet tenni, például ellenőrizni, hogy létezik-e egy hivatkozott fájl, stb. Ha vannak hibák, kivételek vehetők ki ezekből a blokkokból.

Végül a parancssort elemzi. Ez úgy történik, hogy felhívja a feldolgozni! módszer egy OptionParser tárgy. Ennek a módszernek valójában két formája van, elemzési és feldolgozni!. Mint azt a felkiáltójelű verzió is sugallja, romboló. Nem csak a parancssort elemzi, de eltávolítja az összes megtalált opciót is ARGV. Ez egy fontos dolog, csak a mellékelt lehetőségek után marad a mellékelt fájlok listája ARGV.