Parser argumen yang mudah digunakan, menyusun, hanya, argumen baris perintah untuk C ++ 11 dan seterusnya.
| Memperoleh | |
| Lisensi | |
| Standar | |
| Statistik | |
| Tes |
Didistribusikan di bawah lisensi perangkat lunak Boost, versi 1.0. (Lihat lisensi file.txt atau salin di http://www.boost.org/license_1_0.txt)
Header hanya tanpa dependensi eksternal (kecuali pustaka std ).
Tentukan antarmuka Anda sekali untuk mendapatkan penguraian, ketik konversi dan string penggunaan tanpa redundansi.
Menyusun. Setiap opt atau arg adalah parser independen. Gabungkan ini untuk menghasilkan parser gabungan - ini dapat dilakukan secara bertahap di berbagai panggilan fungsi - atau bahkan proyek.
Bind parser langsung ke variabel yang akan menerima hasil parse - tidak ada kamus perantara yang perlu dikhawatirkan.
Atau juga dapat mengikat parser ke lambdas untuk lebih banyak penanganan khusus.
Menyimpulkan jenis dari variabel terikat atau lambdas dan melakukan konversi tipe (melalui ostream << ), dengan penanganan kesalahan, di belakang layar.
Mengikat parser ke vektor untuk arg yang dapat memiliki banyak nilai.
Menggunakan jenis hasil untuk propagasi kesalahan, bukan pengecualian (belum dibangun dengan pengecualian dinonaktifkan, tetapi itu akan datang nanti)
Model Standar POSIX untuk perilaku opt pendek dan panjang.
Sintaks opsi yang dapat disesuaikan.
Tentukan kardinalitas arg -s dari satu ke banyak.
Batasi nilai opsi ke set nilai yang ditentukan.
Grup argumen rekursif dengan panggilan balik untuk dideteksi. Ini memungkinkan spesifikasi sub-perintah yang mudah dan generik.
Untuk digunakan, cukup #include <lyra/lyra.hpp>
Parser untuk satu opsi dapat dibuat seperti ini:
int width = 0 ;
auto cli = lyra::cli()
| lyra::opt( width, " width " )
[ " -w " ][ " --width " ]
( " How wide should it be? " );Anda dapat menggunakan parser ini secara langsung seperti ini:
auto result = cli.parse( { argc, argv } );
if ( !result )
{
std::cerr << " Error in command line: " << result. message () << std::endl;
exit ( 1 );
}
// Everything was ok, width will have a value if supplied on command line.Perhatikan bahwa pengecualian tidak digunakan untuk penanganan kesalahan.
Anda dapat menggabungkan parser dengan menyusun dengan | , seperti ini:
int width = 0 ;
std::string name;
bool doIt = false ;
std::string command;
auto cli
= lyra::opt( width, " width " )
[ " -w " ][ " --width " ]
( " How wide should it be? " )
| lyra::opt( name, " name " )
[ " -n " ][ " --name " ]
( " By what name should I be known " )
| lyra::opt( doIt )
[ " -d " ][ " --doit " ]
( " Do the thing " )
| lyra::arg( command, " command " )
( " which command to run " ); opt menentukan opsi yang dimulai dengan dasbor pendek ( - ) atau dasbor panjang ( -- ). Opsi dapat berupa pengambilan argumen (seperti -w 42 ), dalam hal ini opt mengambil argumen kedua -petunjuk, atau mereka adalah bendera murni (seperti -d ), dalam hal ini opt hanya memiliki satu argumen -yang harus berupa boolean. Nama opsi disediakan dalam satu atau lebih set braket persegi, dan string deskripsi dapat disediakan dalam tanda kurung. Argumen pertama ke opt adalah variabel, lokal, anggota global, dari jenis apa pun yang dapat dikonversi dari string menggunakan std::ostream .
arg menentukan argumen yang tidak terkait dengan opsi, dan karenanya tidak memiliki nama braket persegi. Mereka sebaliknya bekerja seperti opt .
String penggunaan dapat diperoleh dengan memasukkan parser ke dalam aliran. String penggunaan dibangun dari informasi yang disediakan.
Sebagai kenyamanan, opsi bantuan standar ( -h , --help dan -? ) Dapat ditentukan menggunakan parser help , yang hanya membutuhkan boolean untuk mengikat.
Ada versi header tunggal yang dihasilkan dari file sumber. Anda dapat menemukannya di data/single_include/lyra/lyra.hpp . Beberapa peringatan untuk itu:
Ini bukan metode yang disukai untuk menggunakan perpustakaan.
Itu tidak diuji secara menyeluruh.
Ini dimaksudkan untuk menggunakan kasus seperti Compiler Explorer. Di mana ia memungkinkan untuk eksperimen segera.
Dukungan untuk itu tidak akan menjadi prioritas.
Karenanya lebih suka menggunakan sumber multi-file reguler dalam proyek Anda.
Untuk informasi dan dokumentasi lebih lanjut, lihat situs web.