From 1479892e7ba6b4c522e4805715b65823d9c0a4cc Mon Sep 17 00:00:00 2001 From: "killua.z" Date: Tue, 5 May 2026 11:27:48 +0400 Subject: [PATCH] chore: update todo. --- TODO.md | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/TODO.md b/TODO.md index e4b96d5..46ec87e 100644 --- a/TODO.md +++ b/TODO.md @@ -46,12 +46,38 @@ instead of an action doing it. # TODO 7: Defaults/Implicits If given, an arguments default store value could be changed. If nothing was given use that value instead. -# TODO 8: Validators +# TODO 8: Validators | DONE If given, validate the argument before passing to the storage or action. If fail, let user decide fail loud or fail skip. # TODO 9: Subcommand/Subactions Implement subcommand support. Users should be able to define subactions to the higher level action. For example, ```cpp -parser.add_argument( - {{ShortArgument, "l"}, {LongArgument, "list"}, {Action, list_files}, {HelpText, "Lists files in the directory"}}); +parser.add_argument( + {{ShortArgument, "g"}, {LongArgument, "get"}, {Action, get_}, {HelpText, "Gets "}} +); +parser.add_argument( + {{BaseArgument, "g"}, {ShortArgument, "f"}, {LongArgument, "files"}, {Action, get_files}, {HelpText, "Gets files"}} +); +... +``` + +# TODO 10: Reference capture | DONE +Reference capturing. +```cpp +parser.add_argument({ + {ShortArgument, "c"}, + {HelpText, "capture value"}, + {Reference, &captured_value}, +}); +``` + +# TODO 11: Builder | DONE +Implement type safe logic enforcing argument builder; +```cpp +argument::start() + .short_argument("e") + .long_argument("echo") + .help_text("Echo the parsed value.") + .action(echo) + .build(parser); ```