Ein einfacher Gebrauch, Komponieren, nur Header, Befehlszeilenargumente Parser für C ++ 11 und darüber hinaus.
| Erhalten | |
| Lizenz | |
| Standards | |
| Statistiken | |
| Tests |
Unter der Boost -Software -Lizenz verteilt, Version 1.0. (Siehe begleitende Datei lizenz.txt oder kopieren Sie http://www.boost.org/license_1_0.txt)
Header nur ohne externe Abhängigkeiten (außer der std -Bibliothek).
Definieren Sie Ihre Schnittstelle einmal, um Parsen zu erhalten, Conversions und Nutzungszeichenfolgen ohne Redundanz einzugeben.
Komponieren. Jeder opt oder arg ist ein unabhängiger Parser. Kombinieren Sie diese, um einen zusammengesetzten Parser zu produzieren - dies kann in Stufen über mehrere Funktionsaufrufe hinweg oder sogar Projekte erfolgen.
Binden Sie Parser direkt an Variablen, die die Ergebnisse des Analyse erhalten - keine Zwischenwörterbücher, über die man sich Sorgen machen musste.
Oder kann auch Parser an Lambdas binden, um eine benutzerdefinierte Handhabung zu erhalten.
Zieht Typen aus gebundenen Variablen oder Lambdas und führt Typkonvertierungen (über ostream << ) mit Fehlerbehandlung hinter den Kulissen durch.
Binden Sie Parser an Vektoren für Args, die mehrere Werte haben können.
Verwendet Ergebnistypen für die Fehlerausbreitung anstelle von Ausnahmen (erstellt noch nicht mit deaktivierten Ausnahmen, aber das wird später kommen)
Models pox -Standards für kurzes und langes Opt -Opt -Verhalten.
Anpassbare Optionssyntax.
Geben Sie die Kardinalität von arg -s von eins zu vielen an.
Limitoptionswerte für einen angegebenen Satz von Werten.
Rekursive Argumentationsgruppen mit Rückruf zur Erkennung. Dies ermöglicht einfache und generische Unterkommandierungsspezifikationen.
Nur #include <lyra/lyra.hpp>
Ein Parser für eine einzelne Option kann so erstellt werden:
int width = 0 ;
auto cli = lyra::cli()
| lyra::opt( width, " width " )
[ " -w " ][ " --width " ]
( " How wide should it be? " );Sie können diesen Parser direkt so verwenden:
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.Beachten Sie, dass Ausnahmen nicht für die Fehlerbehandlung verwendet werden.
Sie können Parser kombinieren, indem Sie mit | komponieren , so was:
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 gibt Optionen an, die mit einem kurzen Strich ( - ) oder einem langen Strich ( -- ) beginnen. Optionen können Argumenten sein (z. B. -w 42 ). In diesem Fall nimmt der opt ein zweites Argument ein -einen Hinweis oder es handelt sich um reine Flaggen (wie -d ). In diesem Fall hat der opt nur ein Argument -was ein Booleschen sein muss. Die Optionsnamen werden in einer oder mehreren Sätzen von quadratischen Klammern bereitgestellt, und in Klammern kann eine Beschreibungszeichenfolge bereitgestellt werden. Das erste Argument für einen opt ist jede variable, lokale, globale Mitglieder eines jeden Typs, der unter Verwendung von std::ostream von einer Zeichenfolge konvertiert werden kann.
arg gibt Argumente an, die nicht mit Optionen verbunden sind, und haben daher keine Namensnamen für Quadratklassen. Sie funktionieren sonst genau wie opt .
Eine Nutzungszeichenfolge kann durch Einfügen des Parsers in einen Stream erhalten werden. Die Nutzungszeichenfolge ist aus den gelieferten Informationen erstellt.
Als Komfort können die Standardhilfeoptionen ( -h , --help und -? ) Mit dem help -Parser angegeben werden, der nur einen Booleschen zum Binden benötigt.
Es gibt eine Einzelhaderversion, die aus den Quelldateien generiert wird. Sie finden es unter data/single_include/lyra/lyra.hpp . Einige Einschränkungen dafür:
Es ist nicht die bevorzugte Methode zur Verwendung der Bibliothek.
Es wird nicht gründlich getestet.
Es ist für Anwendungsfälle wie Compiler Explorer gedacht. Wo es sofortiges Experimentieren ermöglicht.
Die Unterstützung dafür hat keine Priorität.
Verwenden Sie daher lieber die regulären Multi-File-Quellen in Ihren Projekten.
Weitere Informationen und Dokumentation finden Sie auf der Website.