diff --git a/OptionParser.cpp b/OptionParser.cpp index 3403584..8bc5fb4 100644 --- a/OptionParser.cpp +++ b/OptionParser.cpp @@ -533,15 +533,20 @@ string OptionParser::about_message() const { static const char *PROGRAM_NAME_TAG = "PROGRAM: "; static const std::regex whitespace_re(R"([\s]+)"); - // remove newlines - string tmp_descr{prog_descr}; - regex_replace(begin(tmp_descr), cbegin(tmp_descr), cend(tmp_descr), - whitespace_re, " "); - tmp_descr.erase(tmp_descr.find_last_not_of(' ') + 1); - tmp_descr.erase(0, tmp_descr.find_first_not_of(' ')); - - vector parts; - smithlab::split_whitespace(tmp_descr, parts); + std::vector parts = [&] { + if (prog_descr_is_raw) + return std::vector(1, prog_descr); + // remove newlines + std::string tmp_descr{prog_descr}; + std::regex_replace(std::begin(tmp_descr), std::cbegin(tmp_descr), + std::cend(tmp_descr), whitespace_re, " "); + tmp_descr.erase(tmp_descr.find_last_not_of(' ') + 1); + tmp_descr.erase(0, tmp_descr.find_first_not_of(' ')); + + vector parts; + smithlab::split_whitespace(tmp_descr, parts); + return parts; + }(); std::ostringstream ss; ss << PROGRAM_NAME_TAG << prog_name << endl; diff --git a/OptionParser.hpp b/OptionParser.hpp index b1561e7..60484f5 100644 --- a/OptionParser.hpp +++ b/OptionParser.hpp @@ -128,6 +128,7 @@ class OptionParser { } std::string option_missing_message() const; + void set_prog_descr_raw() { prog_descr_is_raw = true; } static const bool OPTIONAL = false; static const bool REQUIRED = true; @@ -135,6 +136,7 @@ class OptionParser { private: std::string prog_name; std::string prog_descr; + bool prog_descr_is_raw{}; std::string noflag_message; std::vector