Ruby'de Komutları Ayrıştırmak için OptionParser Kullanın

İçinde OptionParser'in özelliklerini tartışan makale OptionParser'ı kullanmanın bazı nedenlerini tartıştık. Yakut ayrıştırmak için manuel olarak ARGV'ye bakmayı tercih eder komutlar elle. Şimdi OptionParser ve özelliklerini nasıl kullanacağınızı öğrenmenin zamanı geldi.

Bu eğiticideki tüm örnekler için aşağıdaki kazan plakası kodu kullanılacaktır. Örneklerden herhangi birini denemek için, opts.on YAPILACAKLAR yorumunun yanındaki blok. Programın çalıştırılması seçeneklerin durumunu ve ARGV'yi yazdırarak anahtarlarınızın etkilerini incelemenizi sağlar.

#! / usr / bin / env yakut
'optparse' gerektir
'pp' gerektir
# Bu karma tüm seçenekleri içerecek
# tarafından komut satırından ayrıştırıldı
# OptionParser.
seçenekler = {}
optparse = OptionParser.new do | opts |
# TODO: Komut satırı seçeneklerini buraya koy
# Bu yardım ekranını görüntüler, tüm programlar
# bu seçeneğe sahip olduğu varsayıldı.
opts.on ('-h', '--help', 'Bu ekranı görüntüle')
ops koyar
çıkış
son
son
# Komut satırını ayrıştırın. İki form olduğunu unutmayın
instagram viewer

ayrıştırma yönteminin # sayısı. 'Ayrıştırma' yöntemi basitçe ayrıştırır
# ARGV, 'ayrıştırma!' yöntemi ARGV'yi ayrıştırır ve kaldırır
# orada bulunan seçeneklerin yanı sıra
# Seçenekler. Geriye kalan, yeniden boyutlandırılacak dosyaların listesidir.
optparse.parse!
pp "Seçenekler:", seçenekler
s "ARGV:", ARGV

Basit Anahtar

Basit bir anahtar, isteğe bağlı formları veya parametreleri olmayan bir bağımsız değişkendir. Efekt, seçeneklerde bir bayrak ayarlamak olacaktır esrar. Başka hiçbir parametre üzerinde yöntem.

seçenekler [: basit] = yanlış
opts.on ('-s', '--simple', "Basit argüman")
seçenekler [: basit] = doğru
son

Zorunlu Parametreli Anahtar

Parametre alan anahtarların yalnızca anahtarın uzun biçiminde parametre adını belirtmesi gerekir. Örneğin, "-f", "--file FILE" -f veya --file anahtarının FILE adında tek bir parametre aldığı ve bu parametrenin zorunlu olduğu anlamına gelir. -F veya --file parametresini de iletmeden kullanamazsınız.

seçenekler [: mand] = ""
opts.on ('-m', '- zorunlu DOSYA', "Zorunlu argüman") do | f |
seçenekler [: mand] = f
son

İsteğe Bağlı Parametreli Anahtar

Anahtar parametrelerinin zorunlu olması gerekmez, isteğe bağlı olabilirler. Bir anahtar parametresini isteğe bağlı olarak bildirmek için, adını anahtar açıklamasındaki parantez içine alın. Örneğin, "--logfile [FILE]" FILE parametresinin isteğe bağlı olduğu anlamına gelir. Sağlanmazsa, program log.txt adlı bir dosya gibi varsayılan bir varsayılan kabul eder.

Örnekte, deyim a = b || c kullanıldı. Bu sadece "a = b için kısayol, ancak b yanlış veya sıfır ise, a = c" dir.

seçenekler [: opt] = yanlış
opts.on ('-o', '- isteğe bağlı [OPT]', "İsteğe bağlı bağımsız değişken") do | f |
seçenekler [: opt] = f || "hiçbir şey değil"
son

Otomatik olarak Float'a Dönüştür

OptionParser argümanı otomatik olarak bazı türlere dönüştürebilir. Bu türlerden biri Float'tır. Bağımsız değişkenlerinizi otomatik olarak Float anahtarına dönüştürmek için Float'ı üzerinde anahtar açıklama dizelerinizden sonra yöntem.

Otomatik dönüşümler kullanışlıdır. Sadece dizeyi istenen türe dönüştürme adımını kaydetmekle kalmaz, aynı zamanda biçimi sizin için kontrol eder ve yanlış biçimlendirilmişse bir istisna atarlar.

seçenekler [: float] = 0.0
opts.on ('-f', '--float NUM', Float, "Float'a dönüştür") do | f |
seçenekler [: float] = f
son

OptionParser'ın otomatik olarak dönüştürebileceği diğer bazı türler arasında Zaman ve Tamsayı bulunur.

Argüman Listeleri

Bağımsız değişkenler liste olarak yorumlanabilir. Siz Float'a dönüştürdüğünüzde bu, bir diziye dönüştürme olarak görülebilir. Seçenek dizeniz "a, b, c" olarak adlandırılacak parametreyi tanımlayabilirken, OptionParser listedeki herhangi bir sayıda öğeye körü körüne izin verir. Bu nedenle, belirli sayıda öğeye ihtiyacınız varsa, dizi uzunluğunu kendiniz kontrol ettiğinizden emin olun.

seçenekler [: list] = []
opts.on ('-l', '- liste a, b, c', Dizi, "Parametre listesi") do | l |
seçenekler [: list] = l
son

Bağımsız Değişken Seti

Bazen argümanları birkaç seçime geçişle sınırlamak mantıklıdır. Örneğin, aşağıdaki anahtar yalnızca tek bir zorunlu parametre alacaktır ve parametre şu parametrelerden biri olmalıdır: Evet, Hayır veya olabilir. Parametre başka bir şeyse, bir istisna atılır.

Bunu yapmak için, anahtar açıklama dizelerinden sonra sembol olarak kabul edilebilir parametrelerin bir listesini iletin.

seçenekler [: set] =: evet
opts.on ('-s', '--set OPT', [: evet,: hayır,: belki], "Bir kümedeki parametreler") do | s |
seçenekler [: set] = s
son

Olumsuz Formlar

Anahtarların reddedilmiş bir formu olabilir. Anahtar --negated denilen zıt etkiyi yapan no-etkisiz. Bunu anahtar açıklama dizesinde tanımlamak için alternatif bölümü parantez içine alın: - [no-] evrik. İlk formla karşılaşılırsa, bloğa true iletilir ve ikinci formla karşılaşılırsa false engellenir.

seçenekler [: neg] = yanlış
opts.on ('-n', '- [hayır-] reddedildi', "Olumsuz biçimler") do | n |
seçenekler [: neg] = n
son
instagram story viewer