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:]]+)"); ("--([[:alnum:]][-_[:alnum:]]+)(=(.*))?|-([[:alnum:]]+)");
std::basic_regex<char> option_specifier std::basic_regex<char> option_specifier
("(([[:alnum:]]),)?([[:alnum:]][-_[:alnum:]]*)?"); ("(([[:alnum:]]),)?[ ]*([[:alnum:]][-_[:alnum:]]*)?");
String String
format_option format_option

View File

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