* new function: cxxopts::Option::set_width(size_t width)
Set the size of a helpline.
* new function: cxxopts::Option::set_tab_expansion()
Expand the tabs in descriptions.
The tabsize 8 chars, base is start of description.
The descriptions are not disturbed by adding additional options.
* Allow newlines \n nad tabs \t in descriptions.
Other changes (last commit/new commit):
* 1453/1471: size_t for OPTION_LONGEST and OPTION_DESC_GAP.
This prevents the static cast in 2086/2140.
* 2088/2142: in case of small width the value of
"width - longest - OPTION_DEC_GAP" becomes negative.
Because size_t is unsigned the result is a big number, and
the width of the column of the descriptions is not shortened.
* new 2143: When the given width is too small, it is set to
longest + OPTION_DESC_GAP + 10
* new 1570: A long description is broken into multiple lines, and
the iterator lastSpace remembers the begin of the last word.
But when the iterator current reaches the end of line, the whole
string from iterator is printed, which in soome cases is too
long. Thats why one blank is added to the description to trigger
the handling of lastSpace.
Accordingly in 1574/1627 the line is shortened by one char.
Some positional parameters would be listed in the help text and others
would not, when what is desired is that no positional parameters are
listed with the other command options. This change suppresses the help
listing for all positional parameters.
String literals with the prefix `u8` now have the type `const char8_t[N]` in
C++20. As a consequence the library does not compile in c++2a mode with GCC
(you can't concatenate `std::basic_string<char>` and `const char8_t[]` as
`char` and `char8_t` are different types).
Fixes#132. Since the map of options is shared between Options and
ParseResult, they should use a shared pointer instead of a reference so
that ParseResult can be returned without referencing destroyed memory.
Fixes#109. Although we always used numbers in the ASCII range, it was
in a `size_t`, leading to a warning about possible loss of data on some
compilers.
Fixes#102. Don't show the default value when it is a boolean and the
value is false. Note that this is a bit of a hack and the
implementation should probably be reevaluated in the future.
Fixes#96. Default values of options not specified on the command line
had a `count` of 1. It would be better if they had a count of 0 because
they were not actually specified, so that count is only for options
given by the user.
* `|` should be inside of `(…)`
It's possible to use `(t|true|T|True)` as `truthy_pattern` but still failing `true` as a truthy under my environment :-(
```
Apple LLVM version 8.0.0 (clang-800.0.42.1)
Target: x86_64-apple-darwin15.6.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
```
Fixes#83.
Adds an overload for positional arguments taking a
`std::initializer_list`. When using an `initializer_list` with one
argument, the function call is ambiguous matching both `std::string`
and `std::vector<std::string>`.
Fixes#84. Implicit values are not handled very well. For example:
--foo false true
--foo --bar
In the first, `false` is an argument to `--foo`, and then `true` is a
positional argument. In the second, because of the hyphen in `--bar`, `--foo`
is parsed with its implicit value. This seems inconsistent and unintuitive.
Better is that implicit values *never* consume the next parameter to be
completely consistent. This means that values with an implicit parameter
*must* be specified using the `--option=value` form.