add pre and post text options

add variables, assignment functions, and printing for text before and after the argument lists.
This commit is contained in:
Ethan Slattery 2019-12-29 10:46:31 -08:00 committed by Ethan Slattery
parent c13e83d0b3
commit 89b9e22f9a

View File

@ -800,6 +800,14 @@ public:
} }
} }
void add_pre_text(std::string aPreText) {
mPreText = std::move(aPreText);
}
void add_post_text(std::string aPostText) {
mPostText = std::move(aPostText);
}
/* Call parse_args_internal - which does all the work /* Call parse_args_internal - which does all the work
* Then, validate the parsed arguments * Then, validate the parsed arguments
* This variant is used mainly for testing * This variant is used mainly for testing
@ -862,7 +870,12 @@ public:
for (const auto &argument : parser.mPositionalArguments) { for (const auto &argument : parser.mPositionalArguments) {
stream << argument.mNames.front() << " "; stream << argument.mNames.front() << " ";
} }
stream << "\n\n"; stream << "\n";
if(!parser.mPreText.empty())
stream << parser.mPreText << "\n";
stream << "\n";
if (!parser.mPositionalArguments.empty()) if (!parser.mPositionalArguments.empty())
stream << "Positional arguments:\n"; stream << "Positional arguments:\n";
@ -880,6 +893,9 @@ public:
stream.width(tLongestArgumentLength); stream.width(tLongestArgumentLength);
stream << mOptionalArgument; stream << mOptionalArgument;
} }
if(!parser.mPostText.empty())
stream << parser.mPostText << "\n\n";
} }
return stream; return stream;
@ -988,6 +1004,8 @@ private:
} }
std::string mProgramName; std::string mProgramName;
std::string mPreText;
std::string mPostText;
std::list<Argument> mPositionalArguments; std::list<Argument> mPositionalArguments;
std::list<Argument> mOptionalArguments; std::list<Argument> mOptionalArguments;
std::map<std::string_view, list_iterator, std::less<>> mArgumentMap; std::map<std::string_view, list_iterator, std::less<>> mArgumentMap;