more tests
parent
30f975e165
commit
f8ed21fda5
|
@ -1,6 +1,6 @@
|
||||||
cmake_minimum_required(VERSION 3.20)
|
cmake_minimum_required(VERSION 3.20)
|
||||||
include(cmake/color.cmake)
|
include(cmake/color.cmake)
|
||||||
set(BLT_VERSION 4.0.22)
|
set(BLT_VERSION 4.0.23)
|
||||||
|
|
||||||
set(BLT_TARGET BLT)
|
set(BLT_TARGET BLT)
|
||||||
|
|
||||||
|
|
|
@ -314,7 +314,7 @@ namespace blt::argparse
|
||||||
m_end(args.data() + args.size())
|
m_end(args.data() + args.size())
|
||||||
{
|
{
|
||||||
BLT_ASSERT(!args.empty() &&
|
BLT_ASSERT(!args.empty() &&
|
||||||
"Argument consumer must have at least one argument allocated to it. First argument is always assumed to be program");
|
"Argument consumer must have at least one argument allocated to it. First argument is always assumed to be program");
|
||||||
}
|
}
|
||||||
|
|
||||||
[[nodiscard]] const argument_string_t& absolute_first() const
|
[[nodiscard]] const argument_string_t& absolute_first() const
|
||||||
|
@ -567,12 +567,9 @@ namespace blt::argparse
|
||||||
class argument_positional_storage_t
|
class argument_positional_storage_t
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
argument_positional_storage_t() = default;
|
explicit argument_positional_storage_t(std::vector<std::pair<std::string, argument_builder_t>> storage): positional_arguments(
|
||||||
|
std::move(storage))
|
||||||
argument_builder_t& add(const std::string_view name)
|
|
||||||
{
|
{
|
||||||
positional_arguments.emplace_back(name, argument_builder_t{});
|
|
||||||
return positional_arguments.back().second;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
argument_builder_t& peek()
|
argument_builder_t& peek()
|
||||||
|
@ -627,7 +624,7 @@ namespace blt::argparse
|
||||||
|
|
||||||
argument_builder_t& add_positional(const std::string_view arg)
|
argument_builder_t& add_positional(const std::string_view arg)
|
||||||
{
|
{
|
||||||
auto& b = m_positional_arguments.add(arg);
|
auto& b = m_positional_arguments.emplace_back(arg, argument_builder_t{}).second;
|
||||||
b.set_dest(std::string{arg});
|
b.set_dest(std::string{arg});
|
||||||
b.set_required(true);
|
b.set_required(true);
|
||||||
b.set_nargs(1);
|
b.set_nargs(1);
|
||||||
|
@ -722,13 +719,14 @@ namespace blt::argparse
|
||||||
void handle_compound_flags(hashset_t<std::string>& found_flags, argument_storage_t& parsed_args, argument_consumer_t& consumer,
|
void handle_compound_flags(hashset_t<std::string>& found_flags, argument_storage_t& parsed_args, argument_consumer_t& consumer,
|
||||||
const argument_string_t& arg);
|
const argument_string_t& arg);
|
||||||
void parse_flag(argument_storage_t& parsed_args, argument_consumer_t& consumer, std::string_view arg);
|
void parse_flag(argument_storage_t& parsed_args, argument_consumer_t& consumer, std::string_view arg);
|
||||||
void parse_positional(argument_storage_t& parsed_args, argument_consumer_t& consumer, std::string_view arg);
|
void parse_positional(argument_storage_t& parsed_args, argument_consumer_t& consumer, argument_positional_storage_t& storage,
|
||||||
|
std::string_view arg);
|
||||||
static void handle_missing_and_default_args(hashmap_t<std::string_view, argument_builder_t*>& arguments,
|
static void handle_missing_and_default_args(hashmap_t<std::string_view, argument_builder_t*>& arguments,
|
||||||
const hashset_t<std::string>& found, argument_storage_t& parsed_args, std::string_view type);
|
const hashset_t<std::string>& found, argument_storage_t& parsed_args, std::string_view type);
|
||||||
static expected<std::vector<std::string>, std::string> consume_until_flag_or_end(argument_consumer_t& consumer,
|
static expected<std::vector<std::string>, std::string> consume_until_flag_or_end(argument_consumer_t& consumer,
|
||||||
hashset_t<std::string>* allowed_choices);
|
hashset_t<std::string>* allowed_choices);
|
||||||
static std::vector<std::string> consume_argc(i32 argc, argument_consumer_t& consumer, hashset_t<std::string>* allowed_choices,
|
static std::vector<std::string> consume_argc(i32 argc, argument_consumer_t& consumer, hashset_t<std::string>* allowed_choices,
|
||||||
std::string_view arg);
|
std::string_view arg);
|
||||||
|
|
||||||
std::optional<std::string> m_name;
|
std::optional<std::string> m_name;
|
||||||
std::optional<std::string> m_usage;
|
std::optional<std::string> m_usage;
|
||||||
|
@ -737,7 +735,7 @@ namespace blt::argparse
|
||||||
std::vector<std::pair<std::string_view, argument_subparser_t>> m_subparsers;
|
std::vector<std::pair<std::string_view, argument_subparser_t>> m_subparsers;
|
||||||
std::vector<std::unique_ptr<argument_builder_t>> m_argument_builders;
|
std::vector<std::unique_ptr<argument_builder_t>> m_argument_builders;
|
||||||
hashmap_t<std::string_view, argument_builder_t*> m_flag_arguments;
|
hashmap_t<std::string_view, argument_builder_t*> m_flag_arguments;
|
||||||
argument_positional_storage_t m_positional_arguments;
|
std::vector<std::pair<std::string, argument_builder_t>> m_positional_arguments;
|
||||||
hashset_t<char> allowed_flag_prefixes = {'-', '+', '/'};
|
hashset_t<char> allowed_flag_prefixes = {'-', '+', '/'};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue