- Implemented ::isSubstitution and used it.
This commit is contained in:
Paul Beckingham 2014-10-27 20:55:42 -04:00
parent 7b67e77752
commit 52a6cfd4a0
2 changed files with 19 additions and 10 deletions

View file

@ -480,22 +480,16 @@ const std::string CLI::dump () const
// Either the arg is appended to _original_args intact, or the lexemes are.
void CLI::addArg (const std::string& arg)
{
// Do not lex RC overrides, UUIDs, patterns.
// Do not lex RC overrides, UUIDs, patterns, substitutions.
if (isRCOverride (arg) ||
isConfigOverride (arg) ||
isUUID (arg) ||
isPattern (arg))
isPattern (arg) ||
isSubstitution (arg))
{
_original_args.push_back (arg);
}
// Do not lex substitutions.
else if (arg.length () > 2 &&
arg[0] == '/' &&
arg[arg.length () - 2] == '/' &&
arg[arg.length () - 1] == 'g')
_original_args.push_back (arg);
// Do not lex, unless lexing reveals OPs.
else
{
@ -1725,7 +1719,7 @@ bool CLI::isUUID (const std::string& raw) const
bool CLI::isPattern (const std::string& raw) const
{
if (raw.length () > 2 &&
raw[0] == '/' &&
raw[0] == '/' &&
raw[raw.length () - 1] == '/')
return true;
@ -1733,3 +1727,17 @@ bool CLI::isPattern (const std::string& raw) const
}
////////////////////////////////////////////////////////////////////////////////
// The non-g case is caught by ::isPattern, but not categorized, so it doesn't
// matter.
bool CLI::isSubstitution (const std::string& raw) const
{
if (raw.length () > 3 && // /x// = length 4
raw[0] == '/' &&
raw[raw.length () - 2] == '/' &&
raw[raw.length () - 1] == 'g')
return true;
return false;
}
////////////////////////////////////////////////////////////////////////////////

View file

@ -102,6 +102,7 @@ private:
bool isConfigOverride (const std::string&) const;
bool isUUID (const std::string&) const;
bool isPattern (const std::string&) const;
bool isSubstitution (const std::string&) const;
public:
std::multimap <std::string, std::string> _entities;