diff options
| author | seh <henesy.dev@gmail.com> | 2019-03-18 16:36:39 -0500 |
|---|---|---|
| committer | seh <henesy.dev@gmail.com> | 2019-03-18 16:36:39 -0500 |
| commit | 0283ccf588a5243b2a992d3d726c2f1344c5438a (patch) | |
| tree | 72c7fd3b20f147299c52aebfc8829adcf4b158cc /Args/README.md | |
| parent | 5cd0b7d8139f0cd5f4af1f9f3b82fe2cd3f37288 (diff) | |
stdlib modules have -M suffix for dir ;; frame for lists example
Diffstat (limited to 'Args/README.md')
| -rw-r--r-- | Args/README.md | 62 |
1 files changed, 0 insertions, 62 deletions
diff --git a/Args/README.md b/Args/README.md deleted file mode 100644 index 2320046..0000000 --- a/Args/README.md +++ /dev/null @@ -1,62 +0,0 @@ -# Command-Line Arguments - -Inferno has a dedicated module for processing commandline flags and arguments, [arg(2)](http://man.cat-v.org/inferno/2/arg). - -## Source - -### args.b:17,22 - -The module `Arg` is loaded and initialized. As per the manual, the `arg->init()` function must be called before any other functions can be called from `Arg`. - -The usage message is also set pre-emptively for use later, if necessary. - -### args.b:24,37 - -There are two flag arguments, `r` and `c` which set reversal of arguments and the list item indicator mark, respectively. - -The flag `r` is a binary option toggle, the flag's presence as an argument is sufficient to change the value of `rev`. - -The flag `c` takes an argument. The `arg->earg()` function is used to pop the flag's argument out of the list. Specifically with regards to `earg()` rather than `arg()` as per the manual, `earg()` will call `arg->usage()` if the relevant argument does not exist. - -Note: After the processing of all flags, `argv` is re-set from the value contained within `arg` to remove the elements (if any) utilized by flags and their arguments. - -### args.b:41,51 - -This section utilizes the `rev` variable to (naively) reverse the list `argv`. After the `rev` check, the list `argv` is printed in order from beginning to end with each element being printed on a new line with the `mark` variable being prefixed to the list element currently at the head of the `argv` list each iteration during printout. - -## Demo - - ; limbo args.b - ; args -h - usage: args [-r] [-c mark] words... - ; args a b c d - Argc after flags: 4 - → a - → b - → c - → d - ; args -r a b c d - Argc after flags: 4 - → d - → c - → b - → a - ; args -c 'quack: ' a b c d - Argc after flags: 4 - quack: a - quack: b - quack: c - quack: d - ; args -r -c '-> ' d c b a - Argc after flags: 4 - -> a - -> b - -> c - -> d - ; - -## Exercises - -- Can you trick `earg()` into accepting a nil value? -- How would you pull an `int` out of `earg()`? -- How would you trip the `usage()` message call-able from `earg()`? |
