diff options
Diffstat (limited to 'src/parameters_parser.cc')
| -rw-r--r-- | src/parameters_parser.cc | 30 |
1 files changed, 6 insertions, 24 deletions
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<StringView> 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 {}; } } |
