Metadata-Version: 2.0
Name: jqfpy
Version: 0.3.2
Summary: jq for pythonista
Home-page: https://github.com/podhmo/jqfpy
Author: podhmo
Author-email: ababjam61+github@gmail.com
License: UNKNOWN
Keywords: jq
Platform: UNKNOWN
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Provides-Extra: docs
Provides-Extra: testing
Provides-Extra: yaml
Requires-Dist: PyYAML; extra == 'yaml'

jqfpy
========================================

jq is too difficult
----------------------------------------

jq is too difficult, at least for me.

For example, extracting key-name when use is true only, from below JSON data.

.. code-block:: json

    {
      "apps": {
        "foo": {
          "use": true
        },
        "bar": {
          "use": true
        },
        "boo": {
          "use": true
        },
        "bee": {
          "use": false
        }
      }
    }

What is jq's answer? (taking over 30 minutes, my past challenges).

.. code-block:: console

  $ cat data.json | jq '.apps | . as $$o | keys | map(select($$o[.].use))'
  [
    "bar",
    "boo",
    "foo"
  ]

If you have python's knowledge, this is tiny oneliner, isn't it?

.. code-block:: console

  $ cat data.json | jqfpy '[k for k, opts in get("apps").items() if opts["use"]]'
  [
    "foo",
    "bar",
    "boo"
  ]

(`get()` is special function, like a `json.load(sys.stdin).get`.)

install
----------------------------------------

.. code-block:: console

  pip install jqfpy


how to use
----------------------------------------

describe syntax
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

todo.

tutorial
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

this is jqfpy version of `jq's Tutorial <https://stedolan.github.io/jq/tutorial/>`_.

.. code-block:: console

   alias jsonDATA="curl 'https://api.github.com/repos/stedolan/jq/commits?per_page=5'"
   # jq.
   jsonDATA | jq '.'
   # jqfpy.
   jsonDATA | jqfpy 'get()'

.. code-block:: console

   # jq.
   jsonDATA | jq '.[0]'
   # jqfpy.
   jsonDATA | jqfpy 'get()[0]'

.. code-block:: console

   # jq.
   jsonDATA | jq '.[0] | {message: .commit.message, name: .commit.committer.name}'
   # jqfpy.
   jsonDATA | jqfpy 'd = get()[0]; {"message": get("commit/message", d), "name": get("commit/committer/name", d)}'
   # or
   jsonDATA | jqfpy '{"message": get("0/commit/message"), "name": get("0/commit/committer/name")}'

.. code-block:: console

   # jq.
   jsonDATA | jq '.[] | {message: .commit.message, name: .commit.committer.name}'
   # jqfpy.
   jsonDATA | jqfpy --squash 'L = get(); [{"message": get("commit/message", d), "name": get("commit/committer/name", d)} for d in L]'

.. code-block:: console

   # jq.
   jsonDATA | jq '[.[] | {message: .commit.message, name: .commit.committer.name, parents: [.parents[].html_url]}]'
   # jqfpy.
   jsonDATA | 'L = get(); [{"message": get("commit/message", d), "name": get("commit/committer/name", d), "parents": [p["html_url"] for p in d["parents"]]} for d in L]'


0.3.2

- the future is dropped that showing help when calling with no arguments

0.3.0

- experimental yaml format support

0.2.0

- correct behaviours of `--slurp` and `--unbuffered`
- support accessing data by json pointer like format
- compact output support
- multiple files support
- exec code only once

0.1.0

- adding some options
- nocode is same as `jq .` (`js == jq .`)
- showing pycode when error is raised

0.0.1

- first release


