From e7483afc41223b868722433f26a06a53d848dc3c Mon Sep 17 00:00:00 2001 From: Henry Fredrick Schreiner Date: Thu, 3 May 2018 10:47:42 +0200 Subject: [PATCH] Adding functional form of Type printout --- include/CLI/App.hpp | 23 +++++++++++------------ include/CLI/Formatter.hpp | 4 ++-- include/CLI/Option.hpp | 16 +++++++++------- tests/HelpTest.cpp | 21 +++++++++++++++++++++ 4 files changed, 43 insertions(+), 21 deletions(-) diff --git a/include/CLI/App.hpp b/include/CLI/App.hpp index bb943218..22b3370f 100644 --- a/include/CLI/App.hpp +++ b/include/CLI/App.hpp @@ -538,9 +538,9 @@ class App { }; Option *opt = add_option(name, fun, description, false); - std::string typeval = detail::type_name(); - typeval += " in {" + detail::join(options) + "}"; - opt->set_custom_option(typeval); + opt->set_type_name( + [&options]() { return std::string(detail::type_name()) + " in {" + detail::join(options) + "}"; }); + return opt; } @@ -589,9 +589,8 @@ class App { }; Option *opt = add_option(name, fun, description, defaulted); - std::string typeval = detail::type_name(); - typeval += " in {" + detail::join(options) + "}"; - opt->set_custom_option(typeval); + opt->set_type_name( + [&options]() { return std::string(detail::type_name()) + " in {" + detail::join(options) + "}"; }); if(defaulted) { std::stringstream out; out << member; @@ -649,9 +648,9 @@ class App { }; Option *opt = add_option(name, fun, description, false); - std::string typeval = detail::type_name(); - typeval += " in {" + detail::join(options) + "}"; - opt->set_custom_option(typeval); + opt->set_type_name([&options]() { + return std::string(detail::type_name()) + " in {" + detail::join(options) + "}"; + }); return opt; } @@ -709,9 +708,9 @@ class App { }; Option *opt = add_option(name, fun, description, defaulted); - std::string typeval = detail::type_name(); - typeval += " in {" + detail::join(options) + "}"; - opt->set_custom_option(typeval); + opt->set_type_name([&options]() { + return std::string(detail::type_name()) + " in {" + detail::join(options) + "}"; + }); if(defaulted) { opt->set_default_str(member); } diff --git a/include/CLI/Formatter.hpp b/include/CLI/Formatter.hpp index 3c366f28..0ba4ac9f 100644 --- a/include/CLI/Formatter.hpp +++ b/include/CLI/Formatter.hpp @@ -193,8 +193,8 @@ inline std::string Formatter::make_option_opts(const Option *opt) const { std::stringstream out; if(opt->get_type_size() != 0) { - if(!opt->get_typeval().empty()) - out << " " << get_label(opt->get_typeval()); + if(!opt->get_type_name().empty()) + out << " " << get_label(opt->get_type_name()); if(!opt->get_defaultval().empty()) out << "=" << opt->get_defaultval(); if(opt->get_expected() > 1) diff --git a/include/CLI/Option.hpp b/include/CLI/Option.hpp index 62524ba2..f56749fb 100644 --- a/include/CLI/Option.hpp +++ b/include/CLI/Option.hpp @@ -171,7 +171,7 @@ class Option : public OptionBase