From 9750152dca44b92637ffcebd3fe0bfde29297bed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Abd=C3=BCssamet=20ERSOYLU?= Date: Sat, 4 Oct 2025 01:14:32 +0400 Subject: [PATCH] docs: add TODO.md for parser callback feature --- TODO.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 TODO.md diff --git a/TODO.md b/TODO.md new file mode 100644 index 0000000..9ff636d --- /dev/null +++ b/TODO.md @@ -0,0 +1,22 @@ +# TODO 1: After Parse callback +Currently interdependent arguments are a problem. In the current version we are handling them as closures. +We create two stateful actions who are taking the state from the close over of the lambda. This is a little hacky/ugly. +To fix this we could have a callback/on_parse_done event. An example usage could be; +```cpp +parser.after_parse([&parser]() { + auto grep_val = parser.get_optional("grep"); + auto file_val = parser.get_optional("file"); + + if (grep_val && file_val) { + grep(*grep_val, *file_val); + } else if (grep_val) { + std::cerr << "grep requires file\n"; + } +}); +``` + +After handle_parse(...) ends, we can call the on_parse_done callbacks. But this requires two things; +1. Storable arguments. Those would be not actions, but stored values. So you could get them later on in the callback or somewhere else. +2. The on_parse_done callbacks should be called after all actions are invoked. But we should make this a toggle, so the callback only gets executed if the user explicitly wants it to be called. By default we would enable it. + +## Self reminder, implement this feature. It'd be helpful.