22#include <kaycxx/cli/detail/to_string.hpp>
27namespace kaycxx::cli {
37template <parseable_value T>
76 auto text = std::string{
"["};
77 for (
auto index = std::size_t{0}; index <
values.size(); ++index) {
85 default_values_ = std::move(
values);
94 return std::format(
"<{}>...",
name());
103 return default_values_ ? 0 : min_count_;
125 if (
values.empty() && default_values_) {
126 validate_count(default_values_->size());
127 return *default_values_;
130 validate_count(
values.size());
132 auto result = std::vector<T>();
154 void validate_count(std::size_t
count)
const {
155 if (
count < min_count_) {
158 if (count > max_count_) {
159 throw parse_error(std::format(
"Too many values for parameter <{}>",
name()));
164 std::size_t min_count_ = 0;
167 std::size_t max_count_ = std::numeric_limits<std::size_t>::max();
170 std::optional<std::vector<T>> default_values_;
Handle for a registered option.
Definition option_handle.hpp:25
Common base class for positional parameter definitions.
Definition parameter_base.hpp:23
std::optional< std::string > const & description() const noexcept
Returns the parameter description.
std::optional< std::string > const & default_value_text() const noexcept
Returns the configured default value rendered for help output.
std::string const & name() const noexcept
Returns the parameter name.
Typed positional parameter list definition.
Definition parameters.hpp:38
std::any parse_values(std::span< std::string_view const > values) const override
Parses this positional parameter list.
Definition parameters.hpp:124
void min(std::size_t count) noexcept
Sets the minimum number of values consumed by this parameter list.
Definition parameters.hpp:55
std::string usage() const override
Returns generated help usage for this parameter list.
Definition parameters.hpp:93
std::size_t min_count() const noexcept override
Returns the minimum number of values consumed by this parameter list.
Definition parameters.hpp:102
void default_values(std::vector< T > values)
Sets default values for this parameter list.
Definition parameters.hpp:75
void max(std::size_t count) noexcept
Sets the maximum number of values consumed by this parameter list.
Definition parameters.hpp:64
parameters(std::string_view name, std::optional< std::string_view > description=std::nullopt)
Creates a positional parameter list definition.
Definition parameters.hpp:46
std::size_t max_count() const noexcept override
Returns the maximum number of values consumed by this parameter list.
Definition parameters.hpp:111
Error thrown when command line arguments cannot be parsed.
Definition parse_error.hpp:19
Defines the common base class for positional parameters.
Defines the command line parse error type.
Defines value parsing support used by typed options and positional parameters.