Fix broken implicit_value when given empty

Fixes #46. When an option had an implicit value, and an empty string was
passed on the command line, the implicit value would be used instead.
This commit is contained in:
Jarryd Beck 2017-05-18 08:03:19 +10:00
parent cca5472def
commit 9db62cb338

View File

@ -482,14 +482,7 @@ namespace cxxopts
void void
parse(const std::string& text) const parse(const std::string& text) const
{ {
if (m_implicit && text.empty()) parse_value(text, *m_store);
{
parse_value(m_implicit_value, *m_store);
}
else
{
parse_value(text, *m_store);
}
} }
bool bool
@ -1028,7 +1021,7 @@ Options::checked_parse_arg
{ {
if (value->value().has_implicit()) if (value->value().has_implicit())
{ {
parse_option(value, name, ""); parse_option(value, name, value->value().get_implicit_value());
} }
else else
{ {
@ -1039,7 +1032,7 @@ Options::checked_parse_arg
{ {
if (argv[current + 1][0] == '-' && value->value().has_implicit()) if (argv[current + 1][0] == '-' && value->value().has_implicit())
{ {
parse_option(value, name, ""); parse_option(value, name, value->value().get_implicit_value());
} }
else else
{ {
@ -1181,7 +1174,7 @@ Options::parse(int& argc, char**& argv)
} }
else if (value->value().has_implicit()) else if (value->value().has_implicit())
{ {
parse_option(value, name, ""); parse_option(value, name, value->value().get_implicit_value());
} }
else else
{ {