diff --git a/cmd/ecli/ecli.adoc b/cmd/ecli/ecli.adoc index 48cd024..5012f53 100644 --- a/cmd/ecli/ecli.adoc +++ b/cmd/ecli/ecli.adoc @@ -34,6 +34,7 @@ Expression Calculator Interactive Tool The tool combines the expression evaluation capabilities of the Expr package with an interactive shell environment, making it ideal for: - Interactive expression testing and prototyping +- Command history survival across sessions - Batch expression evaluation from scripts - Data processing and transformation - Mathematical computations with fractions and complex operators @@ -61,7 +62,7 @@ Start the interactive REPL: ./ecli ---- -You'll see the prompt `>>> ` where you can enter expressions to evaluate. +You'll see the prompt `>>>` where you can enter expressions to evaluate. === Command Line Options @@ -89,11 +90,14 @@ Within the REPL, you can use the following commands: |=== | Command | Description -| `help` | Display available commands and command-line options +| `base [2\|8\|10\|16]` | Set the integer output base. Use without arguments to show current base | `exit` | Exit the REPL -| `multiline` | Toggle multi-line input mode for complex expressions -| `tty` | Toggle TTY mode -| `source ` | Execute expressions from a file +| `help` | Display available commands and command-line options +| `ml` | Enable/Disable multi-line input mode for complex expressions +| `mods` | List all builtin modules (with `*` marking imported ones) +| `output [on\|off\|status]` | Enable/Disable printing of expression results +| `source ` | Load and execute expressions from a file +| `tty` | Enable/Disable ANSI terminal output |=== == Features @@ -160,8 +164,16 @@ hello world [source,bash] ---- ->>> [1, 2, 3, 4, 5] | map(. * 2) -[2, 4, 6, 8, 10] +>>> it = [1, 2, 3, 4, 5] map $_ * 2 +$($([#5])) +>>> $$(it) +[< + 2, + 4, + 6, + 8, + 10 +>] ---- === Evaluating from Command Line @@ -192,7 +204,7 @@ Or from command line: [source,bash] ---- -./ecli -e '@include "expressions.expr"' +./ecli -e "@expressions.expr" ---- == Configuration @@ -233,16 +245,16 @@ The build process generates: === Multi-line Input -For complex expressions, toggle multi-line mode: +For complex expressions, split operations across multiple lines terminating with a backslash (`\`): [source] ---- ->>> multiline ->>> result = [1, 2, 3, 4, 5] -... | filter(. > 2) -... | map(. * 2) ->>> result -[6, 8, 10] +>>> ml +>>> result = [1, 2, 3, 4, 5] \ +... filter $_ > 2 \ +... map $_ * 2 +>>> $$(result) +[<6, 8, 10> ---- === Script Execution @@ -260,16 +272,29 @@ Execute it: [source,bash] ---- -./ecli -e '@source "calculations.expr"' -e 'result' +./ecli -e '@calculations.expr' -e 'result' +50 ---- -=== Chaining Operations +=== Other Iterator Examples [source] ---- >>> data = [{"name": "alice", "age": 30}, {"name": "bob", "age": 25}] ->>> data | map(.name) -[alice, bob] + +// Extract names using map iterator +>>> $$(data map ($_).name) +[< + "alice", + "bob" +>] + +// Filter ages greater than 28 +>>> $$(data filter ($_).age > 28 map ($_).name) +[< + "alice" +>] + ---- == Troubleshooting