Skip to content

Commit

Permalink
readme and change_log updated
Browse files Browse the repository at this point in the history
  • Loading branch information
SpectraL519 committed Apr 8, 2024
1 parent e145aae commit 44e755d
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 12 deletions.
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -219,9 +219,11 @@ The `CPP-AP` library has a few default arguments defined. To add a default argum
```c++
// add positional arguments - pass a std::vector of default positional arguments
parser.default_positional_arguments({...});
// here ... represents a list of ap::default_argument::positional values (or alternatively ap::default_posarg)

// add optional arguments - pass a std::vector of default optional arguments
parser.default_positional_arguments({...});
// here ... represents a list of ap::default_argument::optional values (or alternatively ap::default_optarg)
```
The supported default arguments are:
Expand Down Expand Up @@ -263,7 +265,7 @@ The supported default arguments are:
.action<ap::void_action>(ap::action::check_file_exists_action)
.help("Input file path");

// multi_input - equivalen to:
// multi_input - equivalent to:
parser.add_optional_argument("input", "i")
.required()
.nargs(ap::nargs::at_least(1))
Expand Down
4 changes: 4 additions & 0 deletions change_log.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,3 +31,7 @@
* Added the `install_clang17_toolchain.sh` env script
* Added the `format` workflow
* Switched from the `<algorithm>` to the `<ranges>` library for all current container operations
* Modified the `argument_name` structure - renamed members: `name` to `primary`, `short_name` to `secondary`
* Added aliases for default argument enum classes:
* `ap::default_argument::positional` = `ap::default_posarg`
* `ap::default_argument::optional` = `ap::default_optarg`
25 changes: 14 additions & 11 deletions include/ap/argument_parser.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -1151,6 +1151,9 @@ enum class optional : uint8_t { help, input, output, multi_input, multi_output }

} // namespace default_argument

using default_posarg = default_argument::positional;
using default_optarg = default_argument::optional;

/// @brief Main argument parser class.
class argument_parser {
public:
Expand Down Expand Up @@ -1190,7 +1193,7 @@ class argument_parser {
* @param arg_discriminator_list Vector of default positional argument categories.
* @return Reference to the argument parser.
*/
argument_parser& default_positional_arguments(const std::vector<default_argument::positional>& arg_discriminator_list
argument_parser& default_positional_arguments(const std::vector<default_posarg>& arg_discriminator_list
) noexcept {
for (const auto arg_discriminator : arg_discriminator_list)
this->_add_default_positional_argument(arg_discriminator);
Expand All @@ -1202,7 +1205,7 @@ class argument_parser {
* @param arg_discriminator_list Vector of default optional argument categories.
* @return Reference to the argument parser.
*/
argument_parser& default_optional_arguments(const std::vector<default_argument::optional>& arg_discriminator_list
argument_parser& default_optional_arguments(const std::vector<default_optarg>& arg_discriminator_list
) noexcept {
for (const auto arg_discriminator : arg_discriminator_list)
this->_add_default_optional_argument(arg_discriminator);
Expand Down Expand Up @@ -1433,15 +1436,15 @@ class argument_parser {
* @brief Add default positional argument based on the specified discriminator.
* @param arg_discriminator The default positional argument discriminator.
*/
void _add_default_positional_argument(const default_argument::positional arg_discriminator) noexcept {
void _add_default_positional_argument(const default_posarg arg_discriminator) noexcept {
switch (arg_discriminator) {
case default_argument::positional::input:
case default_posarg::input:
this->add_positional_argument("input")
.action<ap::void_action>(ap::action::check_file_exists_action())
.help("Input file path");
break;

case default_argument::positional::output:
case default_posarg::output:
this->add_positional_argument("output").help("Output file path");
break;
}
Expand All @@ -1451,33 +1454,33 @@ class argument_parser {
* @brief Add default optional argument based on the specified discriminator.
* @param arg_discriminator The default optional argument discriminator.
*/
void _add_default_optional_argument(const default_argument::optional arg_discriminator) noexcept {
void _add_default_optional_argument(const default_optarg arg_discriminator) noexcept {
switch (arg_discriminator) {
case default_argument::optional::help:
case default_optarg::help:
this->add_flag("help", "h").bypass_required().help("Display help message");
break;

case default_argument::optional::input:
case default_optarg::input:
this->add_optional_argument("input", "i")
.required()
.nargs(1)
.action<ap::void_action>(ap::action::check_file_exists_action())
.help("Input file path");
break;

case default_argument::optional::output:
case default_optarg::output:
this->add_optional_argument("output", "o").required().nargs(1).help("Output file path");
break;

case default_argument::optional::multi_input:
case default_optarg::multi_input:
this->add_optional_argument("input", "i")
.required()
.nargs(ap::nargs::at_least(1))
.action<ap::void_action>(ap::action::check_file_exists_action())
.help("Input files paths");
break;

case default_argument::optional::multi_output:
case default_optarg::multi_output:
this->add_optional_argument("output", "o").required().nargs(ap::nargs::at_least(1)).help("Output files paths");
break;
}
Expand Down

0 comments on commit 44e755d

Please sign in to comment.