Commit Graph

694 Commits

Author SHA1 Message Date
Pranav
4277e68e57
Merge pull request #65 from lichray/scan
Simplify parsing numeric arguments with .scan
2019-11-26 08:12:24 -06:00
Zhihao Yuan
e8a44d289d
Parse floating-point numbers in .scan
fixes: p-ranav/argparse#63
2019-11-26 00:11:21 -06:00
Zhihao Yuan
426a5dbb76
Parse integers in the .scan fluent interface 2019-11-25 23:45:55 -06:00
Zhihao Yuan
ea2f16d264
Upgrade and describe supported toolchains 2019-11-25 17:23:28 -06:00
Pranav
c851668339
Merge pull request #64 from lichray/negative
Determine negative numeric values with a grammar
2019-11-24 19:53:53 -06:00
Zhihao Yuan
964790cf3c
Determine negative numeric values with a grammar
Two differences that diverge from the existing behavior:

  1. Leading zeros are not allowed for integers.  Negative
     octal numbers such as `-066` are not meant to be treated
     as positional arguments, but existing code recognize them
     as decimal numbers.  Note that negative floating-point
     numbers with leading zeros (`-003.`) are unambiguous and
     are recognized.
  2. Inf and NaN are not recognized.  This is because options
     like `-inf` is indistinguishable from a compound argument
     that meant to be a shorthand for `-i -n -f`.

fixes: p-ranav/argparse#55
2019-11-24 00:31:05 -06:00
Pranav
473d550ea3
Merge pull request #61 from zhihaoy/exit-on-help
Default --help to print help and exit
2019-11-22 18:01:23 -06:00
Zhihao Yuan
77f3bd9b8d
Default --help to print help and exit
The change also fixes a rare bug introduced in 9007958:
when there are duplicated keys, insert_or_update overrides
previously inserted ones, emplace doesn't.

fixes: p-ranav/argparse#59
2019-11-22 16:54:58 -06:00
Pranav
4cc2c75dec
Merge pull request #60 from zhihaoy/fix-help
Fix print_help for printing nothing
2019-11-22 15:45:58 -06:00
Zhihao Yuan
36003197c7
Fix print_help for printing nothing 2019-11-22 15:33:15 -06:00
Pranav
9cac1d0fed
Update README.md 2019-11-22 08:02:44 -06:00
Pranav
423c0a225c
Merge pull request #58 from zhihaoy/test-suites
Annotate test cases with doctest::test_suite
2019-11-21 14:41:18 -06:00
Zhihao Yuan
1af8b826c8
Annotate test cases with doctest::test_suite
This change also explicitly lists the source files
for CMake.  This is because `GLOB` does not remove
old files when switching branches in Git, and
`CONFIGURE_DEPENDS` will add unstaged files after
stashing.

See also: https://cmake.org/cmake/help/latest/command/file.html#glob
2019-11-21 14:24:50 -06:00
Pranav Srinivas Kumar
d5f48fa204 Minor test cases 2019-11-21 10:28:34 -06:00
Pranav Srinivas Kumar
7e70c43051 Merge branch 'master' of github.com:p-ranav/argparse 2019-11-21 10:25:50 -06:00
Pranav Srinivas Kumar
c707bcc1c4 Closes #56 2019-11-21 10:25:41 -06:00
Pranav Srinivas Kumar
da58b28ccb
Update README.md 2019-11-21 10:00:43 -06:00
Pranav Srinivas Kumar
f9ab33d1a6 Closes #53 2019-11-21 09:08:49 -06:00
Pranav Srinivas Kumar
c95835acf8
Update README.md 2019-11-21 08:37:47 -06:00
Pranav Srinivas Kumar
b42c6b7c7e
Update README.md 2019-11-21 08:37:04 -06:00
Pranav Srinivas Kumar
c803c32804
Update README.md 2019-11-21 08:29:34 -06:00
Pranav Srinivas Kumar
0cabe9569a
Merge pull request #57 from zhihaoy/remaining
Support capturing remaining() arguments
2019-11-21 07:57:12 -06:00
Zhihao Yuan
991df83d97
Support capturing remaining() arguments
This kind of argument works as if having the "remaining" nargs,
inspired by Python's `argparse.REMAINDER`.

This change also reduces the size of `Argument` by 8 bytes.

See also: https://docs.python.org/2/library/argparse.html#nargs

fixes: p-ranav/argparse#17
2019-11-20 17:47:20 -06:00
Pranav Srinivas Kumar
6ee8de5f4e
Merge pull request #54 from lichray/less-sfinae
Finishing cleanup by refactoring SFINAE into constexpr-if
2019-11-17 22:17:13 -06:00
Zhihao Yuan
f7dae0d93d
Refactor some uses of SFINAE into constexpr-if 2019-11-17 20:17:27 -06:00
Zhihao Yuan
93ddf85a7b
Factor out any_cast_container 2019-11-17 20:05:25 -06:00
Zhihao Yuan
3177f544f5
Default value is not a container of std::any 2019-11-17 19:11:09 -06:00
Zhihao Yuan
4c5ded8c84
Constrain Argument constructor better
Without this change, std::allocator can construct Argument
2019-11-17 18:55:52 -06:00
Zhihao Yuan
556d935491
Suppress MSVC warnings and a Codacy warning 2019-11-17 13:42:28 -06:00
Pranav Srinivas Kumar
d3127eb737
Merge pull request #52 from lichray/cleanup
Cleanup & allow creating and accessing arguments with string_view
2019-11-17 07:10:07 -06:00
Zhihao Yuan
8201a18568
Fix various issues in Argument constructor
Before this change:

1. When the input is built-in string literal or cv-`char*`,
   `is_optional` constructs temporary `std::string` while
   `mNames` initializer is also constructing `std::string`
   due to the use of `std::initializer_list`.
2. When the input is `std::string_view`, doesn't compile.
3. When the input is `std::string`, `mNames` initializer
   moves `args`.  If argument name is longer than
   `std::string`'s SSO buffer, bad thing will happen because
   `is_optional` will be accessing `args` in moved-from
   states.

Because of the use of `strtol` which expects nul-terminated
input, `is_*` series functions must take `std::string`.  This
restriction may be removed after AppleClang adds `<charconv>`.
But for now, it complicates the patch.  My solution is to
create an array prvalue still, but use a array reference
rather than `std::initializer_list` to refer to it, so that
the code in delegated constructor can keep using fold
expressions after the necessary `std::string` objects being
created.
2019-11-17 01:51:36 -06:00
Zhihao Yuan
7dd6655a9e
Avoid extra copy made by initializer_list 2019-11-17 01:51:36 -06:00
Zhihao Yuan
56c041707a
Use string_view in getter interface 2019-11-17 01:51:31 -06:00
Zhihao Yuan
f7fe9cf439
Remove unused space in Argument structure 2019-11-16 21:51:01 -06:00
Zhihao Yuan
daeca099e2
Remove undesired access control 2019-11-16 21:45:18 -06:00
Zhihao Yuan
955e1e1e6c
Simplify code with four-legged std::equal 2019-11-16 21:26:49 -06:00
Zhihao Yuan
50c91a0bcc
Clang-format the code 2019-11-16 21:17:53 -06:00
Pranav Srinivas Kumar
439b2d0941
Merge pull request #51 from lichray/value-semantics
Value semantics
2019-11-16 15:35:54 -06:00
Zhihao Yuan
f84f17d719
Give ArgumentParser value semantics
fixes: p-ranav/argparse#50
2019-11-16 15:15:54 -06:00
Zhihao Yuan
9007958c1f
Index arguments without storing their names twice 2019-11-16 14:35:35 -06:00
Zhihao Yuan
3f949fc3f1
Stop sharing argument values with parent parsers
See also: p-ranav/argparse#50
2019-11-16 14:33:00 -06:00
Zhihao Yuan
2208ec5b2d
Remove unused copy of parent parsers 2019-11-16 01:51:47 -06:00
Pranav Srinivas Kumar
5d1e80a7d0
Merge pull request #48 from lichray/bind-in-action
Bind in action
2019-11-14 06:55:57 -06:00
Zhihao Yuan
f6e686b69c
Bind extra arguments to actions
closes: p-ranav/argparse#38
2019-11-14 01:30:04 -06:00
Zhihao Yuan
35ca16338b
Fix configuration for clang-format 8.0
See also https://reviews.llvm.org/D42098
2019-11-13 22:51:02 -06:00
Pranav Srinivas Kumar
77692fda8d
Merge pull request #46 from zhihaoy/void-action
Allow actions that return void
2019-11-13 14:26:42 -06:00
Zhihao Yuan
dc227448f6
Allow actions that return void
closes: p-ranav/argparse#39
2019-11-13 12:54:07 -06:00
Pranav Srinivas Kumar
bda0866320
Merge pull request #44 from lichray/help-stream
Help stream
2019-11-13 08:36:58 -06:00
Pranav Srinivas Kumar
f889195b95
Merge pull request #45 from lichray/no-macro
Remove the undocumented PARSE_ARGS macro
2019-11-13 08:35:03 -06:00
Pranav Srinivas Kumar
883d6c75d5
Merge branch 'master' into help-stream 2019-11-13 08:32:19 -06:00