diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2015-03-14 19:16:46 +0000 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2015-03-14 19:16:46 +0000 |
| commit | b5854ece4383687e41ea69ac6896acd0a894510d (patch) | |
| tree | c7fea52bba5ad073636f3e0e091079131e727f5c /src/parameters_parser.cc | |
| parent | 65fd0df0410760ff2a3c3d965b136ffa776c464d (diff) | |
Change ParameterParser switch interface, use an Optional<StringView>
Merge has_option and option_value into a single method get_switch.
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 {}; } } |
