ruby-jq 0.1.0

libjqが簡単に使えたので、NokogiriっぽいRubyバインディングを作りました。
https://bitbucket.org/winebarrel/ruby-jq

JSONはHTMLほど複雑ではないですが、ネストの深いデータを一発でとってこれるのは便利…かも知れないです。

以下はGitHub APIでファイルのパスだけ取得するサンプル。「.tree[].path」だけでとってこれます。

#!/usr/bin/env ruby
require 'net/http'
require 'jq'

https = Net::HTTP.new('api.github.com', 443)
https.use_ssl = true
https.verify_mode = OpenSSL::SSL::VERIFY_NONE

res = https.start do |w|
  w.get('/repos/rails/rails/git/trees/master?recursive=1')
end

JQ(res.body).search('.tree[].path') do |value|
  p value
end

jpのHEADのビルドについて

jqのHEADからビルドする場合、autoreconfから始める必要があって、少し手間でした。
Macの場合、とりあえずautomake、autoconf、libtool、bisonをイントールして、bisonにパス通して、「./configure --enable-shared」で共有ライブラリを作れました。makeの途中で、rakeによるドキュメント生成に失敗したりしましたが…。

また、他のマックで同様にビルドしようとしたところ「thread-local storage not supported for this target」のエラー。なので https://github.com/stedolan/jq/blob/master/jv_alloc.c#L14 から 「__thread」 を削除…


使えるかどうかわかりませんが、Macのバイナリを添付しておきます。
libjq.tar.gz 直