summaryrefslogtreecommitdiff
path: root/src/parameters_parser.cc
diff options
context:
space:
mode:
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 {};
}
}