CLI2: Some args must avoid lexing
- This now include rc:xxx and rc.xxx.
This commit is contained in:
12
src/CLI2.cpp
12
src/CLI2.cpp
@@ -343,15 +343,27 @@ void CLI2::lexArguments ()
|
|||||||
bool terminated = false;
|
bool terminated = false;
|
||||||
for (unsigned int i = 1; i < _original_args.size (); ++i)
|
for (unsigned int i = 1; i < _original_args.size (); ++i)
|
||||||
{
|
{
|
||||||
|
// The terminator itself is captured.
|
||||||
if (_original_args[i] == "--")
|
if (_original_args[i] == "--")
|
||||||
{
|
{
|
||||||
terminated = true;
|
terminated = true;
|
||||||
_args.push_back (A2 (_original_args[i], Lexer::Type::separator));
|
_args.push_back (A2 (_original_args[i], Lexer::Type::separator));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Any arguments that are after the terminator are captured as words.
|
||||||
else if (terminated)
|
else if (terminated)
|
||||||
{
|
{
|
||||||
_args.push_back (A2 (_original_args[i], Lexer::Type::word));
|
_args.push_back (A2 (_original_args[i], Lexer::Type::word));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// rc:<file> and rc.<name>[:=]<value> argumenst are captured whole.
|
||||||
|
else if (_original_args[i].substr (0, 3) == "rc:" ||
|
||||||
|
_original_args[i].substr (0, 3) == "rc.")
|
||||||
|
{
|
||||||
|
_args.push_back (A2 (_original_args[i], Lexer::Type::pair));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Everything else gets lexed.
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
std::string lexeme;
|
std::string lexeme;
|
||||||
|
|||||||
Reference in New Issue
Block a user