SORU
22 Mayıs 2009, Cuma


Gerçekten Ucuz bir Komut Satırı Seçeneği Ayrıştırma Ruby

EDİT: Lütfenlütfen,lütfencevap vermeden önce iki gereksinimleri bu yazının altındaki listede oku. İnsanlar açıkça gereksinimlerini karşılamak değil hangi yeni taşlar ve kütüphaneler ve onların etajer, ilanıyla tutmak.

Bazen çok ucuza basit bir komut dosyası içine bazı komut satırı seçenekleri kesmek istiyorum. Bu, getopts ile ilgili ya da ayrıştırma olmadan yapmak için eğlenceli bir yol ya da onun gibi bir şey

...
$quiet       = ARGV.delete('-d')
$interactive = ARGV.delete('-i')
...
# Deal with ARGV as usual here, maybe using ARGF or whatever.

Seçenekleri olmayan seçenek, komut satırı parametreleri, olduğu gibi kabul eder, çünkü bu oldukça normal bir Unix seçenekleri sözdizimi değil, "myprog -i foo bar -q" ama ben bununla yaşayabilir. (Bazı insanlar, Subversion geliştiriciler gibi, bu tercih. Bazen ben de öyle düşünüyorum.)

Sadece mevcut veya eksik olan bir seçenek daha eklendi yukarıda daha uygulanabilir. (Bir görev, bir işlev, bir yan etkisi Ara.) Aynı derecede basit bir şekilde bir parametre seçenekleri ile başa çıkmak için, "-f . gibi yoktur ^em>dosya adı"?

DÜZENLEME:

Bir noktada ben bilmiyordum daha önce, çünkü bunu yapmamış olmak temizlemek için benim kadar yazarın Sürtük bahsettiğimiz kütüphane fit "bir [800-line] dosyası," kendimi aramıyorum sadece temiz sözdizimi, ama tekniği o aşağıdaki özelliklere sahiptir:

  1. Bütünden kod eklenebilir komut dosyası (olmadan ezici gerçek komut kendisi, hangi olabilir sadece birkaç düzine hatları), böylece bir damla tek bir dosya bir bin dir herhangi bir sistem ile bir standart Ruby 1.8.[5-7] kurulum ve kullanım. Birkaç seçenek ayrıştırmak için bu kodu bir düzine kadar satır altında ise nerede tablolara ihtiyaç var ve bu bir Ruby script yazmanızı rica ediyorum. ve bu gereksinim başarısız.

  2. Kodu küçük ve bir o kadar da doğrudan hile yapmak yerine, kesme ve yapıştırma başka bir yerden kodu yazmayı unutmayın bu kadar basit. Hayır İnternet ile bir güvenlik duvarı sever konsolundan erişim olduğun durumu düşün ve bir istemci kullanmak için hızlı bir komut dosyası atmak birlikte. Senin hakkında bilmiyorum, ama (yukarıda ihtiyacı başarısız ayrıca) mikro-optparse basitleştirilmiş bile 45 satırları ezberlemek yapmak istediğim bir şey değil.

CEVAP
18 HAZİRAN 2009, PERŞEMBE


Trollop, ben yazar gibi insanların düşündüğü şeyleri bir seçenek çözümleyici makul olduğuna İNANIYORUM. Cidden. Bu pek akla yatkın değil.

Neden başka bir modül seçenekleri ayrıştırmak için uzanan bir modül yapmak zorundayım? Neden her şeyi alt edecek? Neden bazı "" sadece komut satırı ayrıştırılamıyor? çerçevesinde abone olmak zorundayım

İşte yukarıdaki Sürtük sürümü:

opts = Trollop::options do
  opt :quiet, "Use minimal output", :short => 'q'
  opt :interactive, "Be interactive"
  opt :filename, "File to process", :type => String
end

Ve işte bu kadar. opts tuşları :quiet, :interactive :filename karma. Onunla ne istersen yapabilirsin. Ve güzel bir yardım sayfası olsun, ekran genişliği, otomatik kısa değişken isimleri yazın kontrol düzeninde... ihtiyacınız olan her şey.

Bir dosya, eğer resmi bir bağımlılık istemezsin diye lib/ dizini bırakabilirsiniz. Alması kolay, en az bir DSL var.

LOC başına seçenek insanlar. Önemli.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • David Wills

    David Wills

    31 Aralık 2007
  • Hey Nadine

    Hey Nadine

    24 Kasım 2006
  • monkophile

    monkophile

    25 Temmuz 2007