Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/jarro2783/cxxopts.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShivakar Vulli <svulli@shivakar.com>2017-07-16 08:11:03 +0300
committerJarryd Beck <jarro.2783@gmail.com>2017-07-16 08:11:03 +0300
commitf931fd4279e2638ac659fafe0b43fe71a031ecb2 (patch)
treed4bd87689f5b632f76baeb0970ee9f6d2a119a18
parent11faadeba77d05a80c751e97142875c4b296fa87 (diff)
Allow spaces in option specification. (#58)v1.3.0
Fixes #57. Allows spaces after the comma between the short and long option specification.
-rw-r--r--include/cxxopts.hpp2
-rw-r--r--src/example.cpp2
-rw-r--r--test/options.cpp7
3 files changed, 8 insertions, 3 deletions
diff --git a/include/cxxopts.hpp b/include/cxxopts.hpp
index e08f46a..f4fa7df 100644
--- a/include/cxxopts.hpp
+++ b/include/cxxopts.hpp
@@ -884,7 +884,7 @@ namespace cxxopts
("--([[:alnum:]][-_[:alnum:]]+)(=(.*))?|-([[:alnum:]]+)");
std::basic_regex<char> option_specifier
- ("(([[:alnum:]]),)?([[:alnum:]][-_[:alnum:]]*)?");
+ ("(([[:alnum:]]),)?[ ]*([[:alnum:]][-_[:alnum:]]*)?");
String
format_option
diff --git a/src/example.cpp b/src/example.cpp
index 85f0964..f9f50b2 100644
--- a/src/example.cpp
+++ b/src/example.cpp
@@ -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")
diff --git a/test/options.cpp b/test/options.cpp
index 17354c9..62c21ed 100644
--- a/test/options.cpp
+++ b/test/options.cpp
@@ -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]")