
Show HN: Jq alternative built on top of JavaScript anonymous functions – fx - medv
https://github.com/antonmedv/fx
======
fiatjaf
I love jq and I wish I could write full programs using the jq funcional
language, but this fx thing is great.

Mostly because its lack of learning curve, fx is much better positioned to be
used by all people who don't love jq but just use it because there aren't
other options.

~~~
medv
Thanks. It was the case.

------
andrvo
While jq is definitely faster, for more complex tasks I love using ramda-cli
[1]. It has all the functions from the excellent Ramda [2] AND you can use
LiveScript's [3] terser syntax (and pipes!).

Here's a quick command to output a list of recent files on Linux:

    
    
        xml2json < ~/.local/share/recently-used.xbel | ramda '.xbel.bookmark |> pluck \href |> map replace /file:\/\//, ""' -o raw
    

1\. [https://github.com/raine/ramda-cli](https://github.com/raine/ramda-cli)
2\. [http://ramdajs.com/](http://ramdajs.com/) 3\.
[http://livescript.net/](http://livescript.net/)

~~~
andrvo
And here's a more interesting example using output from Algolia's search API:

    
    
       curl 'https://<redacted Algolia url>' | ramda '.hits |> map pick <[title url story_url objectID points num_comments]> |> evolve title: take 2 |> sort (.points) |> reverse'

------
stephenr
The whole reason for using jq in the first place is to handle json _without_
needing to rely on a high level language runtime being available.

~~~
medv
Not convinced. I have nodejs on my machine AND I want to manipulate JSON in
cli.

~~~
stephenr
I didn't say _your_ reason. It's the reason the vast majority of people would
use it.

It's even alluded to on the project homepage:

> jq is written in portable C, and it has zero runtime dependencies. You can
> download a single binary, scp it to a far away machine of the same type, and
> expect it to work.

~~~
medv
Done. =)

Now fx has standalone binary (linux, macos, win):
[https://github.com/antonmedv/fx/releases](https://github.com/antonmedv/fx/releases)

~~~
helb
Now people are going to complain it's 1500x bigger than jq… :)

Thanks for this tool, i think i'll use it. Jq is great, but i can't do
"advanced" operations without manual and/or Google. I use JS almost every day,
so with Fx it's way easier (for me).

------
sd8dgf8ds8g8dsg
> Plain JavaScript

I don't agree this is a feature. An Javascript implementation of a command
line tool is a terrible idea performance wise. There is good reasons jq is
written in C.

~~~
medv
It's main feature actually. Zero learning curve. Everybody know JavaScript and
when performance not important, "fx" is your choose.

