From b5854ece4383687e41ea69ac6896acd0a894510d Mon Sep 17 00:00:00 2001 From: Maxime Coste Date: Sat, 14 Mar 2015 19:16:46 +0000 Subject: Change ParameterParser switch interface, use an Optional Merge has_option and option_value into a single method get_switch. --- src/parameters_parser.cc | 30 ++++++------------------------ 1 file changed, 6 insertions(+), 24 deletions(-) (limited to 'src/parameters_parser.cc') diff --git a/src/parameters_parser.cc b/src/parameters_parser.cc index 0e6f0bc5..6448cca5 100644 --- a/src/parameters_parser.cc +++ b/src/parameters_parser.cc @@ -46,38 +46,20 @@ ParametersParser::ParametersParser(ParameterList params, throw wrong_argument_count(); } -bool ParametersParser::has_option(const String& name) const +Optional ParametersParser::get_switch(StringView name) const { - kak_assert(m_desc.switches.find(name) != m_desc.switches.end()); - for (auto& param : m_params) - { - if (param[0_byte] == '-' and param.substr(1_byte) == name) - return true; - - if (param == "--") - break; - } - return false; -} - -const String& ParametersParser::option_value(const String& name) const -{ -#ifdef KAK_DEBUG auto it = m_desc.switches.find(name); kak_assert(it != m_desc.switches.end()); - kak_assert(it->second.takes_arg); -#endif - for (size_t i = 0; i < m_params.size(); ++i) { - if (m_params[i][0_byte] == '-' and m_params[i].substr(1_byte) == name) - return m_params[i+1]; + const auto& param = m_params[i]; + if (param[0_byte] == '-' and param.substr(1_byte) == name) + return it->second.takes_arg ? m_params[i+1] : StringView{}; - if (m_params[i] == "--") + if (param == "--") break; } - static String empty; - return empty; + return {}; } } -- cgit v1.2.3