mirror of
https://github.com/CLIUtils/CLI11.git
synced 2025-05-08 07:43:52 +00:00
docs: update validator
This commit is contained in:
parent
f1349f12e3
commit
99a8edcfcd
@ -1,9 +1,5 @@
|
|||||||
# Validators
|
# Validators
|
||||||
|
|
||||||
{% hint style='info' %}
|
|
||||||
Improved in CLI11 1.6
|
|
||||||
{% endhint %}
|
|
||||||
|
|
||||||
There are two forms of validators:
|
There are two forms of validators:
|
||||||
|
|
||||||
* `transform` validators: mutating
|
* `transform` validators: mutating
|
||||||
@ -15,9 +11,9 @@ the function should throw a `CLI::ValidationError` with the appropriate reason a
|
|||||||
|
|
||||||
However, `check` validators come in two forms; either a simple function with the const version of the
|
However, `check` validators come in two forms; either a simple function with the const version of the
|
||||||
above signature, `std::string(const std::string &)`, or a subclass of `struct CLI::Validator`. This
|
above signature, `std::string(const std::string &)`, or a subclass of `struct CLI::Validator`. This
|
||||||
structure has two members that a user should set; one (`func`) is the function to add to the Option
|
structure has two members that a user should set; one (`func_`) is the function to add to the Option
|
||||||
(exactly matching the above function signature, since it will become that function), and the other is
|
(exactly matching the above function signature, since it will become that function), and the other is
|
||||||
`tname`, and is the type name to set on the Option (unless empty, in which case the typename will be
|
`name_`, and is the type name to set on the Option (unless empty, in which case the typename will be
|
||||||
left unchanged).
|
left unchanged).
|
||||||
|
|
||||||
Validators can be combined with `&` and `|`, and they have an `operator()` so that you can call them
|
Validators can be combined with `&` and `|`, and they have an `operator()` so that you can call them
|
||||||
@ -29,8 +25,8 @@ An example of a custom validator:
|
|||||||
```cpp
|
```cpp
|
||||||
struct LowerCaseValidator : public Validator {
|
struct LowerCaseValidator : public Validator {
|
||||||
LowerCaseValidator() {
|
LowerCaseValidator() {
|
||||||
tname = "LOWER";
|
name_ = "LOWER";
|
||||||
func = [](const std::string &str) {
|
func_ = [](const std::string &str) {
|
||||||
if(CLI::detail::to_lower(str) != str)
|
if(CLI::detail::to_lower(str) != str)
|
||||||
return std::string("String is not lower case");
|
return std::string("String is not lower case");
|
||||||
else
|
else
|
||||||
@ -54,3 +50,15 @@ The built-in validators for CLI11 are:
|
|||||||
| `Range(min=0, max)` | Produce a range (factory). Min and max are inclusive. |
|
| `Range(min=0, max)` | Produce a range (factory). Min and max are inclusive. |
|
||||||
|
|
||||||
|
|
||||||
|
And, the protected members that you can set when you make your own are:
|
||||||
|
|
||||||
|
| Type | Member | Description |
|
||||||
|
|------|--------|-------------|
|
||||||
|
| `std::function<std::string(std::string &)>` | `func_` | Core validation function - modifies input and returns "" if successful |
|
||||||
|
| `std::function<std::string()>` | `desc_function` | Optional description function (uses `description_` instead if not set) |
|
||||||
|
| `std::string` | `name_` | The name for search purposes |
|
||||||
|
| `int` (`-1`) | `application_index_` | The element this validator applies to (-1 for all) |
|
||||||
|
| `bool` (`true`) | `active_` | This can be disabled |
|
||||||
|
| `bool` (`false`) | `non_modifying_` | Specify that this is a Validator instead of a Transformer |
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user