|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r77931 - in trunk: boost/program_options boost/program_options/detail libs/program_options/test
From: ghost_at_[hidden]
Date: 2012-04-12 04:37:38
Author: vladimir_prus
Date: 2012-04-12 04:37:34 EDT (Thu, 12 Apr 2012)
New Revision: 77931
URL: http://svn.boost.org/trac/boost/changeset/77931
Log:
Allow to specify how option's value is named in help message.
Fixes #4781.
Text files modified:
trunk/boost/program_options/detail/value_semantic.hpp | 7 ++++---
trunk/boost/program_options/value_semantic.hpp | 8 ++++++++
trunk/libs/program_options/test/options_description_test.cpp | 16 ++++++++++++++++
3 files changed, 28 insertions(+), 3 deletions(-)
Modified: trunk/boost/program_options/detail/value_semantic.hpp
==============================================================================
--- trunk/boost/program_options/detail/value_semantic.hpp (original)
+++ trunk/boost/program_options/detail/value_semantic.hpp 2012-04-12 04:37:34 EDT (Thu, 12 Apr 2012)
@@ -16,16 +16,17 @@
std::string
typed_value<T, charT>::name() const
{
+ std::string const& var = (m_value_name.empty() ? arg : m_value_name);
if (!m_implicit_value.empty() && !m_implicit_value_as_text.empty()) {
- std::string msg = "[=arg(=" + m_implicit_value_as_text + ")]";
+ std::string msg = "[=" + var + "(=" + m_implicit_value_as_text + ")]";
if (!m_default_value.empty() && !m_default_value_as_text.empty())
msg += " (=" + m_default_value_as_text + ")";
return msg;
}
else if (!m_default_value.empty() && !m_default_value_as_text.empty()) {
- return arg + " (=" + m_default_value_as_text + ")";
+ return var + " (=" + m_default_value_as_text + ")";
} else {
- return arg;
+ return var;
}
}
Modified: trunk/boost/program_options/value_semantic.hpp
==============================================================================
--- trunk/boost/program_options/value_semantic.hpp (original)
+++ trunk/boost/program_options/value_semantic.hpp 2012-04-12 04:37:34 EDT (Thu, 12 Apr 2012)
@@ -227,6 +227,13 @@
return this;
}
+ /** Specifies the name used to to the value in help message. */
+ typed_value* value_name(const std::string& name)
+ {
+ m_value_name = name;
+ return this;
+ }
+
/** Specifies an implicit value, which will be used
if the option is given, but without an adjacent value.
Using this implies that an explicit value is optional, but if
@@ -354,6 +361,7 @@
// Default value is stored as boost::any and not
// as boost::optional to avoid unnecessary instantiations.
+ std::string m_value_name;
boost::any m_default_value;
std::string m_default_value_as_text;
boost::any m_implicit_value;
Modified: trunk/libs/program_options/test/options_description_test.cpp
==============================================================================
--- trunk/libs/program_options/test/options_description_test.cpp (original)
+++ trunk/libs/program_options/test/options_description_test.cpp 2012-04-12 04:37:34 EDT (Thu, 12 Apr 2012)
@@ -228,6 +228,21 @@
);
}
+void test_value_name()
+{
+ options_description desc("Supported options");
+ desc.add_options()
+ ("include", value<string>()->value_name("directory"), "Search for headers in 'directory'.")
+ ;
+
+ stringstream ss;
+ ss << desc;
+ BOOST_CHECK_EQUAL(ss.str(),
+"Supported options:\n"
+" --include directory Search for headers in 'directory'.\n"
+ );
+}
+
int main(int, char* [])
{
@@ -238,6 +253,7 @@
test_long_default_value();
test_word_wrapping();
test_default_values();
+ test_value_name();
return 0;
}
Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk