From 52a6cfd4a02fb11fe01e0d667e3523b3734caead Mon Sep 17 00:00:00 2001 From: Paul Beckingham Date: Mon, 27 Oct 2014 20:55:42 -0400 Subject: [PATCH] CLI - Implemented ::isSubstitution and used it. --- src/CLI.cpp | 28 ++++++++++++++++++---------- src/CLI.h | 1 + 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/src/CLI.cpp b/src/CLI.cpp index c58cc1433..485cc4603 100644 --- a/src/CLI.cpp +++ b/src/CLI.cpp @@ -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; +} + +//////////////////////////////////////////////////////////////////////////////// diff --git a/src/CLI.h b/src/CLI.h index b2c3c4f9c..4ec1c1dc3 100644 --- a/src/CLI.h +++ b/src/CLI.h @@ -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 _entities;