parent
1dd7f546af
commit
46ada3886f
@ -234,25 +234,21 @@ CommandLineParser::CommandLineParser(int argc, const char* const argv[], const S
|
|||||||
jj = 0;
|
jj = 0;
|
||||||
for (int i = 1; i < argc; i++)
|
for (int i = 1; i < argc; i++)
|
||||||
{
|
{
|
||||||
String s = String(argv[i]);
|
String s(argv[i]);
|
||||||
|
bool hasSingleDash = s.length() > 1 && s[0] == '-';
|
||||||
|
|
||||||
if (s.find('=') != String::npos && s.find('=') < s.length())
|
if (hasSingleDash)
|
||||||
{
|
{
|
||||||
std::vector<String> k_v = impl->split_string(s, '=', true);
|
bool hasDoubleDash = s.length() > 2 && s[1] == '-';
|
||||||
for (int h = 0; h < 2; h++)
|
String key = s.substr(hasDoubleDash ? 2 : 1);
|
||||||
{
|
String value = "true";
|
||||||
if (k_v[0][0] == '-')
|
size_t equalsPos = key.find('=');
|
||||||
k_v[0] = k_v[0].substr(1, k_v[0].length() -1);
|
|
||||||
|
if(equalsPos != String::npos) {
|
||||||
|
value = key.substr(equalsPos + 1);
|
||||||
|
key = key.substr(0, equalsPos);
|
||||||
}
|
}
|
||||||
impl->apply_params(k_v[0], k_v[1]);
|
impl->apply_params(key, value);
|
||||||
}
|
|
||||||
else if (s.length() > 2 && s[0] == '-' && s[1] == '-')
|
|
||||||
{
|
|
||||||
impl->apply_params(s.substr(2), "true");
|
|
||||||
}
|
|
||||||
else if (s.length() > 1 && s[0] == '-')
|
|
||||||
{
|
|
||||||
impl->apply_params(s.substr(1), "true");
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -203,4 +203,19 @@ TEST(CommandLineParser, testEmptyStringValue)
|
|||||||
EXPECT_FALSE(parser.check());
|
EXPECT_FALSE(parser.check());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(CommandLineParser, positional_regression_5074_equal_sign)
|
||||||
|
{
|
||||||
|
static const char * const keys3 =
|
||||||
|
"{ @eq0 | | }"
|
||||||
|
"{ eq1 | | }";
|
||||||
|
|
||||||
|
const char* argv[] = {"<bin>", "1=0", "--eq1=1=0"};
|
||||||
|
const int argc = 3;
|
||||||
|
cv::CommandLineParser parser(argc, argv, keys3);
|
||||||
|
EXPECT_EQ("1=0", parser.get<String>("@eq0"));
|
||||||
|
EXPECT_EQ("1=0", parser.get<String>(0));
|
||||||
|
EXPECT_EQ("1=0", parser.get<String>("eq1"));
|
||||||
|
EXPECT_TRUE(parser.check());
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
Loading…
x
Reference in New Issue
Block a user