npm install lobarA thin shell wrapper for lodash.chain().
``shell`
> npm install -g lobar
`shell
> lbr -h
Usage: lbr
Options:
-d, --data
-f, --filename
-v, --verbose verbosity level [count]
-p, --prettyPrint pretty print output [boolean]
-i, --interactive interactive mode [boolean]
-h, --help Show help [boolean]
-V, --version Show version number [boolean]
Examples:
lbr -d '["foo"]' map upperCase ["FOO"]
echo '{"foo": "bar"}' | lbr get foo "bar"
echo '{"foo": "bar"}' | lbr .foo "bar"
`
`shell`
$ echo '[{"foo":"bar"}, {"foo":"baz"}]' | lbr map foo
> ["bar","baz"]
You also have access to lodash methods inside of the method calls:
`shell`
$ echo '[{"foo":"bar"}, {"foo": 3}]' | lbr filter 'x => isString(x.foo)'
> [{"foo":"bar"}]
A leading . on an argument is shorthand for get:
`shell`
$ echo '{"foo": {"bar": "baz"}}' | lbr .foo.bar
> "baz"
is equivalent to:
`shell`
$ echo '{"foo": {"bar": "baz"}}' | lbr get foo.bar
> "baz"
`shell`
$ curl https://registry.npmjs.com/lobar | lbr -i
#### vi keybindings
Interactive mode has basic vi keybindings. It starts in insert mode.
##### autocompletion
In insert mode, lobar will try to infer methods or argument from method/arg
position and evaluated JSON at the current cursor position. / or/ to navigate the completion list.
##### normal mode
Hitting esc will drop you into normal mode, where you can move horizontallyh
with , l, b, w, e, t, f, T, F, 0, and $. You can also usec and d with those movements in addition to i and a with a character or{}[]{}'"
one of . Vertical movement ('j', 'k', , ), will scroll the
json output.
u to undo and to redo.
y will copy your current prompt input to your clipboard.
to exit or enter to exit and print the currently evaluated json tostdout.
If you want to use a string argument for a method that collides with a lodash
method name, you'll have to quote it twice:
`shell`
echo '[{"isString": true}]' | lbr filter "'isString'"
[{"isString":true}]
This is because lbr tries to eval the argument with lodash as the context.
`shell`
echo '[{"isString": true}]' | lbr filter isString
[]
You can set options using environment variables:
`shell``
$ LOBAR_PRETTY_PRINT=true lbr -d '{"foo": "bar"}' .foo
> "bar"
I really like jq, but I have to look up the
syntax all the time. As a javascript developer, I already know lodash, and it's
generally enough for what I want to do at the command line.
* interactive mode
- history
- commands:
- R
- tests