-bool CliParser::init(const QStringList &args) {
- argsRaw = args;
- QStringList::const_iterator currentArg;
- for (currentArg = argsRaw.constBegin(); currentArg != argsRaw.constEnd(); ++currentArg) {
- if(currentArg->startsWith("--")) {
- // long
- QString name;
- if(currentArg->contains("=")) {
- // option
- QStringList tmp = currentArg->mid(2).split("=");
- name = tmp.at(0);
- QString value;
- // this is needed to allow --option=""
- if(tmp.at(1).isNull()) value = QString("");
- else value = tmp.at(1);
- if(!addLongArg(CliParserArg::CliArgOption, name, value)) return false;
- }
- else {
- // switch
- name = currentArg->mid(2);
- if(!addLongArg(CliParserArg::CliArgSwitch, name)) return false;
- }
- }
- else if(currentArg->startsWith("-")) {
- // short
- char name;
- QStringList::const_iterator nextArg = currentArg+1;
- // if next arg is a short/long option/switch the current arg is one too
- if(nextArg == argsRaw.constEnd() || nextArg->startsWith("-")) {
- // switch
- for (int i = 0; i < currentArg->mid(1).toAscii().size(); i++) {
- name = currentArg->mid(1).toAscii().at(i);
- if(!addShortArg(CliParserArg::CliArgSwitch, name)) return false;
+
+bool CliParser::init(const QStringList &args)
+{
+ argsRaw = args;
+ QStringList::const_iterator currentArg;
+ for (currentArg = argsRaw.constBegin(); currentArg != argsRaw.constEnd(); ++currentArg) {
+ if (currentArg->startsWith("--")) {
+ // long
+ QString name;
+ if (currentArg->contains("=")) {
+ // option
+ QStringList tmp = currentArg->mid(2).split("=");
+ name = tmp.at(0);
+ QString value;
+ // this is needed to allow --option=""
+ if (tmp.at(1).isNull()) value = QString("");
+ else value = tmp.at(1);
+ if (!addLongArg(CliParserArg::CliArgOption, name, value)) return false;
+ }
+ else {
+ // switch
+ name = currentArg->mid(2);
+ if (!addLongArg(CliParserArg::CliArgSwitch, name)) return false;
+ }