Module id.xfunction

Class SmartArgs

Object
SmartArgs

public class SmartArgs extends Object
Class for parsing command line arguments.

Key-value arguments (like "-k val") are sent to HANDLERS.

Key only arguments (like "-l") are sent to DEFAULT_HANDLER.

If default handler returns false we stop processing further arguments.

Example:


 private Map<String, Consumer<String>> handlers = new HashMap<String, Consumer<String>>() {{
     put("-k", val -> {...});
     put("-e", expr -> {...});
     put("-d", dir -> {...});
 }};
 private Function<String, Boolean> defaultHandler = arg -> {
     switch (arg) {
     case "-v": {
         ...
         return true;
     }
     case "--no-wait": {
         ...
         return true;
     }}
     throw new ArgumentParsingException();
 };
 SmartArgs args = new SmartArgs(handlers, defaultHandler);
 args.parse(new String[] {"-k" , "value", "-v", "-e", "expr"});
 

You can use key-value arguments with positional arguments as well. To do this you just gather all values of default handler:


 List<String> positionalArgs = new ArrayList<>();
 new SmartArgs(handlers, arg -> positionalArgs.add(arg))
     .parse(new String[] {"-k" , "value", "arg1", "arg2", "arg3"});
 // all positional arguments now available in positionalArgs