Az OptionParser használatával parancsokat elemezhet Ruby-ban

Ban,-ben az OptionParser szolgáltatásaival foglalkozó cikk megvitattuk azokat az okokat, amelyek miatt az OptionParser használatba vehető be Rubin Az elemzéshez inkább az ARGV kézi átvizsgálása szükséges parancsok kézzel. Itt az ideje, hogy megtanulja, hogyan kell használni az OptionParser szoftvert és annak funkcióit.

A következő kazánlap kódot fogjuk használni az útmutató összes példájához. A példák kipróbálásához egyszerűen tegye a példákat opts.on blokkolja a TODO megjegyzés mellett. A program futtatásával kinyomtatja az opciók és az ARGV állapotát, lehetővé téve a kapcsolók hatásainak megvizsgálását.

#! / usr / bin / env rubin
„optparse” megkövetelése
„pp” megkövetelése
# Ez a kivonat tartalmazza az összes lehetőséget
# elemzi a parancssorból
# OptionParser.
opciók = {}
optparse = OptionParser.new do | opts |
# TODO: Helyezze ide a parancssori beállításokat
# 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')
instagram viewer

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!
pp "Opciók:", opciók
pp "ARGV:", ARGV

Egyszerű kapcsoló

Az egyszerű kapcsoló egy argumentum, opcionális űrlapok vagy paraméterek nélkül. Ennek eredményeként egyszerűen beállít egy zászlót az opciókban hash. A paraméterhez semmilyen más paraméter nem kerül továbbításra tovább eljárás.

beállítások [: egyszerű] = hamis
opts.on ('-s', '--simple', "Simple argument") nem
lehetőségek [: egyszerű] = igaz
vég

Váltás kötelező paraméterrel

Azoknak a kapcsolóknak, amelyek egy paramétert vesznek, csak a kapcsoló hosszú alakjában kell megadni a paraméter nevét. Például, "-f", "--file File" azt jelenti, hogy a -f vagy --file kapcsoló egyetlen, a FILE nevű paramétert vesz, és ez a paraméter kötelező. A -f vagy a --file fájlt sem használhatja anélkül, hogy egy paramétert átadna neki.

options [: mand] = ""
opts.on ('-m', '- kötelező fájl "," kötelező érv ") do | f |
lehetőségek [: mand] = f
vég

Váltás opcionális paraméterrel

A kapcsolóparamétereknek nem kötelezőnek kell lenniük, hanem opcionálisak is lehetnek. Ha egy kapcsolóparamétert választhatónak nyilvánít, akkor tegye a nevét zárójelbe a kapcsolóleírásban. Például, "--logfile [FILE]" azt jelenti, hogy a FILE paraméter nem kötelező. Ha nem szállítják be, akkor a program ésszerű alapértelmezést fog vállalni, például egy log.txt nevû fájlt.

A példában a kifejezés a = b || c használt. Ez csak rövidítés az "a = b esetén, de ha b hamis vagy nulla, a = c".

options [: opt] = hamis
opts.on ('-o', '--opcionális [OPT]', "Opcionális érv") do | f |
opciók [: opt] = f || "semmi"
vég

Automatikusan átalakítás lebegőssé

Az OptionParser automatikusan konvertálja az argumentumokat egyes típusokká. Az egyik ilyen típus az úszó. Ha az érveit automatikusan átalakítja Float-ra, add át a Float-t a tovább módszer a kapcsoló leíró karakterláncai után.

Az automatikus konvertálás praktikus. Nem csak megtakarítják a karakterlánc kívánt típusra konvertálásának lépését, hanem ellenőrzik a megfelelő formátumot is, és kivételt képeznek, ha helytelenül formázják.

lehetőségek [: úszó] = 0,0
opts.on ('-f', '--float NUM', Float, "Convert to float") do | f |
lehetőségek [: úszó] = f
vég

Néhány más típus, amelyet az OptionParser átalakíthat automatikusan, ideértve az Idő és Egész számot.

Az érvek listája

Az érvek listákként értelmezhetők. Ez úgy tekinthető, mint egy tömbre konvertálás, amikor Float-ra konvertál. Míg az opciós karakterlánc meghatározhatja az „a, b, c” elnevezésű paramétert, az OptionParser vakon tetszőleges számú elemet engedélyezi a listában. Tehát, ha megadott számú elemre van szüksége, akkor ellenőrizze saját maga a tömb hosszát.

lehetőségek [: lista] = []
opts.on ('-l', '- a, b, c', tömb, "Paraméterlista") do | l |
opciók [: lista] = l
vég

Érvek halmaza

Néha ésszerű az érveket néhány választásra való átváltásra korlátozni. Például, a következő kapcsoló csak egy kötelező paramétert vesz igénybe, és a paraméternek az egyiknek kell lennie Igen, nem vagy talán. Ha a paraméter egyáltalán nem más, akkor kivétel történik.

Ehhez adja át az elfogadható paraméterek listáját szimbólumként a kapcsolóleírás sorok után.

opciók [: set] =: igen
opts.on ('-s', '--set OPT', [: igen,: nem,: talán], "Paraméterek egy halmazból") do | s |
opciók [: set] = s
vég

Negált űrlapok

A kapcsolók negatív formájúak lehetnek. A kapcsoló --negated lehet az, amely ellentétes hatással jár, úgynevezett -no-negált. Ennek leírására a kapcsoló leíró sorában tegye az alternatív részt zárójelbe: - [no-] negált. Ha az első űrlap találkozik, akkor az igaz átkerül a blokkba, a hamis blokkolásra kerül, ha a második űrlap találkozik.

options [: neg] = hamis
opts.on ('-n', '- [no-] negatív', "Negált formák") nem | n |
opciók [: neg] = n
vég
instagram story viewer