Euphoria
|
argparse.cc
Go to the documentation of this file.
27 * instead of .Add("arg").Help("") perhaps change to .Add(Arg{"arg"}.Help("")) so chainging arguments is possible
29 * extra validators combinable with | that adds more conditions (files must exists, strings can be empty, numbers must be in range etc)
63 const auto first_invalid_character = to_lower(str).find_first_not_of(valid_argument_name_characters);
74 FileOutput::FileOutput(const std::string& o) : file(o), single(!(ends_with(o, "/") || ends_with(o, "\\")))
318 Argument::set_allow_before_positionals()
325 ArgumentAndName::ArgumentAndName(const argparse::Name& n, std::shared_ptr<argparse::Argument> a)
831 return add_argument(name, std::make_shared<ArgumentNoValue>([void_function](Runner*) {void_function(); return argparse::ok; }));
std::string trim_left(const std::string &string_to_trim, std::string_view trim_characters)
Remove characters from the left, stops at invalid character.
Definition: stringutils.cc:72
std::string to_lower(const std::string &str)
Generate a string containing only lower characters.
Definition: stringutils.cc:143
std::vector< std::string > split(const std::string &s, char delim)
Definition: stringutils.cc:431
std::string trim(const std::string &string_to_trim, std::string_view trim_characters)
Remove characters from both the start and the end.
Definition: stringutils.cc:79
Definition: argparse.cc:45
std::string create_default_nargs(const Name &name)
Definition: argparse.cc:794
std::function< ParseResult()> CompleteFunction
Definition: argparse.h:343
bool operator==(const ParseResult &lhs, const ParseResult &rhs)
Definition: argparse.cc:109
int parse_from_main(Parser *parser, int argc, char *argv[])
helper function for parsing directly from main
Definition: argparse.cc:1335
@ parsing
std::string to_string(const ParseResult &pr)
Definition: argparse.cc:105
void print_parse_error(Runner *runner, ParserBase *base, const std::string &error_message)
Definition: argparse.cc:216
bool operator!=(const ParseResult &lhs, const ParseResult &rhs)
Definition: argparse.cc:116
SubParserStyle
how the subparsing is handled, non-greedy are useful for 'scripting' with subparsers
Definition: argparse.h:399
std::function< ParseResult(SubParser *)> SubParserCallback
Definition: argparse.h:342
@ help
std::vector< std::string > get_word_wrapped(const std::string &str, std::function< bool(const std::string &)> fit)
Definition: wordwrap.cc:62
std::vector< std::pair< A, B > > zip_longest(const std::vector< A > &as, const std::vector< B > &bs, A da=A(), B db=B())
Definition: functional.h:34
std::string add_quotes_and_combine_with_english_or(const std::vector< std::string > &matches)
Definition: default_parse.cc:10
String utility functions.
std::string merge(const std::vector< std::string > &strings) const
Definition: stringmerger.cc:11
Definition: table.h:18
named tuple class for argument and name
Definition: argparse.h:244
std::function< ParseResult(Runner *)> CallbackFunction
Definition: argparse.h:255
CallbackFunction callback_function
Definition: argparse.h:257
bool have_nargs() override
Definition: argparse.cc:339
std::optional< std::string > get_second_line() override
Definition: argparse.cc:346
ParseResult parse_arguments(Runner *runner, const std::string &name, ParserBase *caller) override
Definition: argparse.cc:355
ArgumentNoValue(CallbackFunction cb)
Definition: argparse.cc:332
ArgumentReader(const NameAndArguments &a)
Definition: argparse.cc:149
Argument & set_help(const std::string &h)
Definition: argparse.cc:310
Argument & set_allow_before_positionals()
Definition: argparse.cc:318
void print_error(const std::string &line) override
Definition: argparse.cc:201
void print_info(const std::string &line) override
Definition: argparse.cc:208
FileOutput(const std::string &o)
Definition: argparse.cc:74
std::string get_next_file(bool print=true)
Definition: argparse.cc:79
void create_dir_if_missing() const
Definition: argparse.cc:98
ParseResult parse_arguments(Runner *runner, const std::string &name, ParserBase *caller) override
Definition: argparse.cc:388
std::function< std::optional< std::string >()> DescribeFunction
Definition: argparse.h:317
MultiArgument(CallbackFunction cb, DescribeFunction d)
Definition: argparse.cc:365
DescribeFunction describe_function
Definition: argparse.h:320
std::optional< std::string > get_second_line() override
Definition: argparse.cc:380
CallbackFunction callback_function
Definition: argparse.h:319
std::function< ParseResult(Runner *runner, const std::string &name, ParserBase *caller, const std::string &value) > CallbackFunction
Definition: argparse.h:316
NameAndArguments(const std::string &n, const std::vector< std::string > &a)
Definition: argparse.cc:122
static NameAndArguments extract(int argc, char *argv[])
Definition: argparse.cc:130
std::vector< std::string > arguments
Definition: argparse.h:100
Name(const char *nn)
bool is_optional() const
Definition: argparse.h:42
base for the parser, start with Parser and add one or more subparsers
Definition: argparse.h:412
std::vector< std::shared_ptr< SubParserGroup > > subparser_groups
Definition: argparse.h:418
virtual std::string get_calling_name(const NameAndArguments &args)=0
std::map< std::string, std::shared_ptr< Argument > > optional_arguments
Definition: argparse.h:415
std::vector< ArgumentAndName > positional_argument_list
Definition: argparse.h:414
void on_complete(CompleteFunction com)
Definition: argparse.cc:852
std::shared_ptr< Argument > find_argument(const std::string &name) const
Definition: argparse.cc:869
Argument & set_const(const Name &name, T *target, T t)
Definition: argparse.h:443
virtual ParserBase * get_parent_or_null()=0
std::vector< ArgumentAndName > optional_argument_list
Definition: argparse.h:416
void print_help(std::shared_ptr< Printer > printer, const NameAndArguments &args)
Definition: argparse.cc:613
Argument & set_true(const Name &name, bool *target)
Definition: argparse.cc:836
Argument & set_false(const Name &name, bool *target)
Definition: argparse.cc:844
std::optional< CompleteFunction > on_complete_function
Definition: argparse.h:419
Argument & add_void_function(const Name &name, std::function< void()> void_function)
Definition: argparse.cc:829
std::shared_ptr< SubParserGroup > add_sub_parsers(const std::string &name="commands")
Definition: argparse.cc:859
ParserBase(const std::string &d)
Definition: argparse.cc:524
ParseResult parse_args(Runner *runner)
Definition: argparse.cc:1207
Argument & add(const Name &name, T *target, ParseFunction< T > parse_function=default_parse_function< T >)
Definition: argparse.h:453
Argument & add_argument(const Name &name, std::shared_ptr< Argument > argument)
Definition: argparse.cc:802
std::string generate_usage_string(const NameAndArguments &args)
Definition: argparse.cc:550
EnumToStringImplementation< std::shared_ptr< SubParserContainer > > subparsers
Definition: argparse.h:417
root parser. start argumentparsing with this one
Definition: argparse.h:575
ParseResult parse(const NameAndArguments &args)
Definition: argparse.cc:1303
std::shared_ptr< argparse::Printer > printer
Definition: argparse.h:576
ParserBase * get_parent_or_null() override
Definition: argparse.cc:1296
std::string get_calling_name(const NameAndArguments &args) override
Definition: argparse.cc:1328
DescribeFunction describe_function
Definition: argparse.h:289
ParseResult parse_arguments(Runner *runner, const std::string &name, ParserBase *caller) override
Definition: argparse.cc:436
CallbackFunction callback_function
Definition: argparse.h:288
std::function< std::optional< std::string >()> DescribeFunction
Definition: argparse.h:286
SingleArgument(CallbackFunction cb, DescribeFunction d)
Definition: argparse.cc:413
std::optional< std::string > get_second_line() override
Definition: argparse.cc:428
std::function< ParseResult(Runner *runner, const std::string &name, ParserBase *caller, const std::string &value) > CallbackFunction
Definition: argparse.h:285
SubParserContainer(const SubParserNames &n, const std::string &h, SubParserCallback cb)
Definition: argparse.cc:473
void add(const SubParserNames &names, const std::string &desc, SubParserCallback sub)
Definition: argparse.cc:498
std::vector< std::shared_ptr< SubParserContainer > > parsers
Definition: argparse.h:374
SubParserGroup(const std::string &t, ParserBase *o)
Definition: argparse.cc:486
valid names for a single subparser example: [checkout, co] or [pull]
Definition: argparse.h:348
SubParserNames(const char *str)
Definition: argparse.cc:466
ParserBase * get_parent_or_null() override
Definition: argparse.cc:1267
std::string get_calling_name(const NameAndArguments &args) override
Definition: argparse.cc:1274
SubParser(const std::string &d, ParserBase *p, argparse::Runner *r, const std::string &cn)
Definition: argparse.cc:1252
ParseResult on_complete(CompleteFunction com)
Definition: argparse.cc:1281