summaryrefslogtreecommitdiff
path: root/src/parameters_parser.cc
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2015-03-14 19:16:46 +0000
committerMaxime Coste <frrrwww@gmail.com>2015-03-14 19:16:46 +0000
commitb5854ece4383687e41ea69ac6896acd0a894510d (patch)
treec7fea52bba5ad073636f3e0e091079131e727f5c /src/parameters_parser.cc
parent65fd0df0410760ff2a3c3d965b136ffa776c464d (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.cc30
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 {};
}
}