ng-clp 0.2.0

ng-clp (no-grammar definition command-line parser)
Documentation
# ng-clp

Ng-clp (no-grammar definition command-line parser) is one of Rust's command-line parsers. 
A normal command-line parser generates a parser from the definition of command-line options that accepts a command line according to its grammar. In contrast, ng-clp uses a universal parser to discover what it assumes to be options or arguments from the given command-line arguments.

## How it works?

You can run a sample program with `cargo run` as follows:

```sh
$ cargo run -- foo -bar bal --bra boo
Argument: foo
Option: -b ar
Argument: bal
Option: --bra boo
```

## Format of flags and options accepted by ng-clp

The arguments, flags, and options accepted by ng-clp can be described as follows (option names, arguments, etc. are capitalized here to be easier to distinguish).

|  Format   |                Parsed                 |
| --------- | ------------------------------------- |
| `-A`      | Flag `-A`.                            |
| `-A BC`   | Option `-A` with argument `BC`.       |
| `-ABC`    | Option `-A` with argument `BC`.       |
| `--AB`    | Flag `--AB`.                          |
| `--AB CD` | Option `--AB` with the argument `CD`. |
| `--AB=CD` | Option `--AB` with argument `CD`.     |

"But isn't that ambiguous?" If you are wondering, you are correct.

When the command line is:

`-a bc`

ng-clp allows treating with the command line in the following two interpretations.

* A flag `-a` appears (with no argument; the following `bc` is a normal command-line argument that has nothing to do with the flag `-a`).
* An option `-a` appears with argument `bc`.

## How do I use ng-clp?

(1) Add a dependency to `ng-clp` and `anyhow` in `Cargo.toml`:

```
[dependencies]
ng-clp = "0.1"
anyhow = "1.0"
```

(2) Copy the boilerplate code [boilerplate/main.rs](boilerplate/main.rs) in your `main.rs` and modify it.

## License

MIT/Apache-2.0

## Links

* [ng-clp's page in Crates.io]https://crates.io/crates/ng-clp
* [ng-clp's repository in GitHub]https://github.com/tos-kamiya/ng-clp

ng-clp is based on the same idea as the original product [gzclp](https://github.com/tos-kamiya/zgclp), but their APIs are completely different from each other.