Allow spaces in option specification. (#58)

Fixes #57.

Allows spaces after the comma between the short and long option
specification.
This commit is contained in:
Shivakar Vulli 2017-07-16 15:11:03 +10:00 committed by Jarryd Beck
parent 11faadeba7
commit f931fd4279
3 changed files with 8 additions and 3 deletions

View File

@ -884,7 +884,7 @@ namespace cxxopts
("--([[:alnum:]][-_[:alnum:]]+)(=(.*))?|-([[:alnum:]]+)");
std::basic_regex<char> option_specifier
("(([[:alnum:]]),)?([[:alnum:]][-_[:alnum:]]*)?");
("(([[:alnum:]]),)?[ ]*([[:alnum:]][-_[:alnum:]]*)?");
String
format_option

View File

@ -38,7 +38,7 @@ int main(int argc, char* argv[])
options.add_options()
("a,apple", "an apple", cxxopts::value<bool>(apple))
("b,bob", "Bob")
("f,file", "File", cxxopts::value<std::vector<std::string>>(), "FILE")
("f, file", "File", cxxopts::value<std::vector<std::string>>(), "FILE")
("i,input", "Input", cxxopts::value<std::string>())
("o,output", "Output file", cxxopts::value<std::string>()
->default_value("a.out")->implicit_value("b.def"), "BIN")

View File

@ -52,6 +52,7 @@ TEST_CASE("Basic options", "[options]")
("value", "an option with a value", cxxopts::value<std::string>())
("a,av", "a short option with a value", cxxopts::value<std::string>())
("6,six", "a short number option")
("p, space", "an option with space between short and long")
;
Argv argv({
@ -62,7 +63,9 @@ TEST_CASE("Basic options", "[options]")
"value",
"-a",
"b",
"-6"
"-6",
"-p",
"--space",
});
char** actual_argv = argv.argv();
@ -77,6 +80,8 @@ TEST_CASE("Basic options", "[options]")
CHECK(options["value"].as<std::string>() == "value");
CHECK(options["a"].as<std::string>() == "b");
CHECK(options.count("6") == 1);
CHECK(options.count("p") == 2);
CHECK(options.count("space") == 2);
}
TEST_CASE("Short options", "[options]")