diff --git a/doc/doc.md b/doc/doc.md deleted file mode 100644 index 766e5bd..0000000 --- a/doc/doc.md +++ /dev/null @@ -1,66 +0,0 @@ -# Documentation - -The **fx** can work in two modes: as a reducer or an interactive viewer. - -To start the interactive mode pipe a JSON into **fx**: - -```sh -$ curl ... | fx -``` - -Or you can pass a filename as the first parameter: - -```sh -$ fx data.json -``` - -## Reducers - -Use [JavaScript](js.md), [Python](python.md), or [Ruby](ruby.md). - -## Streaming mode - -The **fx** supports line-delimited JSON streaming or concatenated JSON streaming. - -```sh -$ echo ' -> {"message": "hello"} -> {"message": "world!"} -> ' | fx .message -hello -world! -``` - -## Interactive mode - -Type `?` to see the full list of available shortcuts while in the interactive mode. - -### Search - -Press `/` and type regexp pattern to search in the current JSON. -Search is performed on the internal representation of the JSON without newlines. - -Type `n` to jump to the next result, and `N` to the previous - -### Selecting text - -You can't just select text in fx. This is due to the fact that all mouse events are -redirected to stdin. To be able to select again you need to instruct your terminal -not to do it. This can be done by holding special keys while selecting: - -| Key | Terminal | -|------------------|---------------| -| `Option`+`Mouse` | iTerm2, Hyper | -| `Fn`+`Mouse` | Terminal.app | -| `Shift`+`Mouse` | Linux | - - -## Configs - -Next configs available for **fx** via environment variables. - -| Name | Values | Description | -|----------------|-----------------------------------------------------|-------------------------------------------------------| -| `FX_LANG` | `js` (default), `node`, `python`, `python3`, `ruby` | Reducer type. | -| `FX_THEME` | `0` (disable colors), `1` (default), `2..9` | Color theme. | -| `FX_SHOW_SIZE` | `true` or `false` (default) | Show size of arrays and object in collapsed previews. | diff --git a/doc/images/preview.png b/doc/images/preview.png deleted file mode 100644 index 0eb9195..0000000 Binary files a/doc/images/preview.png and /dev/null differ diff --git a/doc/images/themes.png b/doc/images/themes.png deleted file mode 100644 index fdc9614..0000000 Binary files a/doc/images/themes.png and /dev/null differ diff --git a/doc/js.md b/doc/js.md deleted file mode 100644 index 939e25d..0000000 --- a/doc/js.md +++ /dev/null @@ -1,120 +0,0 @@ -# JavaScript Reducers - -If any additional arguments were passed, fx converts them into a function which -takes the JSON as an argument named `x`. - -By default, fx uses builtin JavaScript VM ([goja](https://github.com/dop251/goja)), -but also can be used with node. - -```sh -export FX_LANG=js # Default -``` - -Or for usage with node: - -```sh -export FX_LANG=node -``` - -An example of anonymous function used as a reducer: -```sh -$ echo '{"foo": [{"bar": "value"}]}' | fx 'x => x.foo[0].bar' -value -``` - -The same reducer function can be simplified to: - -```sh -$ echo '{"foo": [{"bar": "value"}]}' | fx 'x.foo[0].bar' -value -``` - -Each argument treated as a reducer function. - -```sh -$ echo '{"foo": [{"bar": "value"}]}' | fx 'x.foo' 'x[0]' 'x.bar' -value -``` - -Update JSON using the spread operator: - -```sh -$ echo '{"name": "fx", "count": 0}' | fx '{...this, count: 1}' -{ - "name": "fx", - "count": 1 -} -``` - -## Dot - -Fx supports simple JS-like syntax for accessing data, which can be used with any `FX_LANG`. - -```sh -$ echo '{"foo": [{"bar": "value"}]}' | fx .foo[0].bar -value -``` - -## .fxrc.js - -Create _.fxrc.js_ file in `$HOME` directory, and define some useful functions. - -```js -// .fxrc.js -function upper(s) { - return s.toUpperCase() -} -``` - -```sh -$ cat data.json | fx .name upper -ANTON -``` - -## Node - -```sh -export FX_LANG=node -``` - -Use any npm package by installing it globally. Create _.fxrc.js_ file in `$HOME` -directory, and require any packages or define global functions. For example, -to access all lodash methods without `_` prefix, put next line into your -_.fxrc.js_ file: - -```js -Object.assign(global, require('lodash/fp')) -``` - -And now you will be able to call all lodash methods. For example, see who's been -committing to react recently: - -```sh -curl 'https://api.github.com/repos/facebook/react/commits?per_page=100' \ -| fx 'groupBy("commit.author.name")' 'mapValues(size)' toPairs 'sortBy(1)' reverse 'take(10)' fromPairs -``` - -> To be able to require global modules make sure you have correct `NODE_PATH` env variable. -> ```sh -> export NODE_PATH=`npm root -g` -> ``` - -The _.fxrc.js_ file supports both: `import` and `require`. - -```js -// .fxrc.js -import 'zx/globals' -const _ = require('lodash') -``` - -> If you want to use _.fxrc.js_ for both `FX_LANG=js` and `FX_LANG=node`, -> separate parts by `// nodejs:` comment: -> ```js -> // .fxrc.js -> function upper(s) { -> return s.toUpperCase() -> } -> // nodejs: -> import 'zx/globals' -> const _ = require('lodash') -> ``` diff --git a/doc/python.md b/doc/python.md deleted file mode 100644 index d678a49..0000000 --- a/doc/python.md +++ /dev/null @@ -1,27 +0,0 @@ -# Python Reducers - -If any additional arguments was passed, **fx** converts it to a function which -takes the JSON as an argument named `x`. - -```sh -export FX_LANG=python -``` -Or -```sh -export FX_LANG=python3 -``` - -Example: - -```sh -fx data.json '[x["age"] + i for i in range(10)]' -``` - -## Dot - -Fx supports simple syntax for accessing data, which can be used with any `FX_LANG`. - -```sh -$ echo '{"foo": [{"bar": "value"}]}' | fx .foo[0].bar -value -``` diff --git a/doc/ruby.md b/doc/ruby.md deleted file mode 100644 index 74d6d43..0000000 --- a/doc/ruby.md +++ /dev/null @@ -1,23 +0,0 @@ -# Ruby Reducers - -If any additional arguments was passed, **fx** converts it to a function which -takes the JSON as an argument named `x`. - -```sh -export FX_LANG=ruby -``` - -Example: - -```sh -fx data.json 'x.to_a.map {|x| x[1]}' -``` - -## Dot - -Fx supports simple syntax for accessing data, which can be used with any `FX_LANG`. - -```sh -$ echo '{"foo": [{"bar": "value"}]}' | fx .foo[0].bar -value -```