You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
fx/README.md

95 lines
1.7 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# fx [![Build Status](https://travis-ci.org/antonmedv/fx.svg?branch=master)](https://travis-ci.org/antonmedv/fx)
Command-line JSON processing tool
## Features
* Don't need to learn new syntax
* Plain JavaScript
* Formatting and highlighting
## Install
```
$ npm install -g fx
```
## Usage
Pipe into `fx` any JSON and anonymous function for reducing it.
```
$ fx [code ...]
```
Pretty print JSON:
```
$ echo '{"key":"value"}' | fx
{
"key": "value"
}
```
Use anonymous function:
```
$ echo '{"foo": [{"bar": "value"}]}' | fx "x => x.foo[0].bar"
"value"
```
If you don't pass anonymous function `param => ...`, code will be automatically transformed into anonymous function.
And you can get access to JSON by `this` keyword:
```
$ echo '{"foo": [{"bar": "value"}]}' | fx "this.foo[0].bar"
"value"
```
You can pass any number of anonymous functions for reducing JSON:
```
$ echo '{"foo": [{"bar": "value"}]}' | fx "x => x.foo" "this[0]" "this.bar"
"value"
```
If passed code contains `yield` keyword, [generator expression](https://github.com/sebmarkbage/ecmascript-generator-expression)
will be used:
```
$ curl ... | fx "for (let user of this) if (user.login.startsWith('a')) yield user"
```
Access to JSON through `this` keyword:
```
$ echo '["a", "b"]' | fx "yield* this"
[
"a",
"b"
]
```
```
$ echo '["a", "b"]' | fx "yield* this; yield 'c';"
[
"a",
"b",
"c"
]
```
You can update existing JSON using spread operator:
```
$ echo '{"count": 0}' | fx "{...this, count: 1}"
{
"count": 1
}
```
## Related
* [jq](https://github.com/stedolan/jq) cli JSON processor on C
* [jsawk](https://github.com/micha/jsawk) like awk, but for JSON
* [json](https://github.com/trentm/json) another JSON manipulating cli library
## License
MIT