ruby-jq 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NTVjYjg1MGJiNGUzNmQ0NmFmMzYzYWVjZWZjNjUxYjAyZGMwYTgxMg==
4
+ ZWVjZTVhZmQ4MzYwZTI4OTU0YWNhMmMxMmI3MjIzMjU1MmE0Y2Y4Nw==
5
5
  data.tar.gz: !binary |-
6
- NDRjMDM4ZGFmNDRkNjQ0ZTMyMGFiMTNhZDk2YmJjZmExNWYwODc0MQ==
6
+ OGMwZjZhODEzYWFjMjhmNmE4NGZiM2YyOTFlZDRkNmM0MDRhZTFhOA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- YTlkMDFlOGYxYWZkZTc0MzA0MTAzMDAzNmMzYjgwNGRlMjkzYmFmY2E5Mjgy
10
- MTAzNWUxYjhjOTQ3NTM0NTg1ZDAzMjllZmIzZDVkMzU2NDNmNzRjMzdjODli
11
- MTQ5ZTc1YjdmY2YyZGM2ZDRkNzkyOGIxMTJmZDE2YzM0NjljMzk=
9
+ ZjZiODYyOTRiYTMzNDZjMWE1OTY4ZGIxMzE3MmMwZjA5M2ZiODAyODhiYzY4
10
+ YTNlNDMxNWVhYjBlY2ExMjI4MWJlMjhkMDJkMjg1YWQzNjQxNWJjYTY2MmEx
11
+ ODExNzJhZmI2OWJhY2NmNDI3MjYyYWQxMjhiYjUwMWY5Njg1ZWU=
12
12
  data.tar.gz: !binary |-
13
- OTg2M2JkNmUzY2E3MDg1YjBmYTI2MjdlMDcyOWE0ZDk3YzdjOWY4ZGM1YTVh
14
- NmI5MjY1ZjhhYzQ3NmU5MjEwZjBiNjBlMDYxODQzYmYxNGQ1OTM5ZjhjMGFm
15
- MjdmOGJmY2RlZmQxOTgyMzA4ZjY0NmFhYWZlYWY2ZDkxYjcwYjA=
13
+ OWRiOTg4OTU5ZmExNzRlYWEwMWQxNTg2YTYxYzNkNDcyYjgwY2M2ZDQ3YzNi
14
+ NGRiZjA1ZjAxYzczYTY2M2IwN2VkNjg4YmQzNWUwYzQ5NzE0NDJlM2IyNDg3
15
+ MTdmY2MzMjMzYTY3YzQzOWJmN2Y0ZjZiNTgzOTE4YTEyM2Q5ZTk=
data/README.md CHANGED
@@ -1,9 +1,11 @@
1
1
  # ruby-jq
2
2
 
3
- Ruby binding for jq.
3
+ Ruby bindings for jq.
4
4
 
5
5
  see [http://stedolan.github.io/jq/](http://stedolan.github.io/jq/).
6
6
 
7
+ [![Build Status](https://drone.io/bitbucket.org/winebarrel/ruby-jq/status.png)](https://drone.io/bitbucket.org/winebarrel/ruby-jq/latest)
8
+
7
9
  ## Installation
8
10
 
9
11
  First, please install libjq from HEAD of [git repository](https://github.com/stedolan/jq).
data/Rakefile CHANGED
@@ -1 +1,10 @@
1
1
  require "bundler/gem_tasks"
2
+ require 'rspec/core/rake_task'
3
+ require 'rake/extensiontask'
4
+
5
+ RSpec::Core::RakeTask.new('spec')
6
+ Rake::ExtensionTask.new('jq_core') do |ext|
7
+ ext.ext_dir = 'ext'
8
+ end
9
+
10
+ task :default => [:compile, :spec]
data/ext/jq_core.c CHANGED
@@ -2,19 +2,16 @@
2
2
 
3
3
  static VALUE rb_eJQ_Error;
4
4
 
5
- void rb_jq_free(struct jq_container *p) {
5
+ static void rb_jq_free(struct jq_container *p) {
6
6
  xfree(p);
7
7
  }
8
8
 
9
- static void rb_jq_mark(struct jq_container *p) {
10
- }
11
-
12
9
  static VALUE rb_jq_alloc(VALUE klass) {
13
10
  struct jq_container *p;
14
11
  p = ALLOC(struct jq_container);
15
12
  p->jq = NULL;
16
13
  p->closed = 1;
17
- return Data_Wrap_Struct(klass, rb_jq_mark, rb_jq_free, p);
14
+ return Data_Wrap_Struct(klass, 0, rb_jq_free, p);
18
15
  }
19
16
 
20
17
  static VALUE rb_jq_initialize(VALUE self, VALUE program) {
data/lib/jq/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module JQ
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
data/ruby-jq.gemspec CHANGED
@@ -8,8 +8,8 @@ Gem::Specification.new do |spec|
8
8
  spec.version = JQ::VERSION
9
9
  spec.author = "winebarrel"
10
10
  spec.email = "sgwr_dts@yahoo.co.jp"
11
- spec.description = "Ruby binding for jq"
12
- spec.summary = "Ruby binding for jq"
11
+ spec.description = "Ruby bindings for jq"
12
+ spec.summary = "Ruby bindings for jq"
13
13
  spec.homepage = "https://bitbucket.org/winebarrel/ruby-jq"
14
14
  spec.license = "MIT"
15
15
 
@@ -22,4 +22,6 @@ Gem::Specification.new do |spec|
22
22
  spec.add_dependency "json"
23
23
  spec.add_development_dependency "bundler", "~> 1.3"
24
24
  spec.add_development_dependency "rake"
25
+ spec.add_development_dependency "rake-compiler"
26
+ spec.add_development_dependency "rspec"
25
27
  end
data/spec/jq_spec.rb ADDED
@@ -0,0 +1,153 @@
1
+ require 'spec_helper'
2
+
3
+ describe JQ do
4
+ it 'int' do
5
+ expect(JQ('1').search('.')).to eq([1])
6
+
7
+ JQ('1').search('.') do |value|
8
+ expect(value).to eq(1)
9
+ end
10
+ end
11
+
12
+ it 'float' do
13
+ expect(JQ('1.2').search('.')).to eq([1.2])
14
+
15
+ JQ('1.2').search('.') do |value|
16
+ expect(value).to eq(1.2)
17
+ end
18
+ end
19
+
20
+ it 'string' do
21
+ expect(JQ('"Zzz"').search('.')).to eq(["Zzz"])
22
+
23
+ JQ('"Zzz"').search('.') do |value|
24
+ expect(value).to eq("Zzz")
25
+ end
26
+ end
27
+
28
+ it 'array' do
29
+ expect(JQ('[1, "2", 3]').search('.')).to eq([[1, "2", 3]])
30
+
31
+ JQ('[1, "2", 3]').search('.') do |value|
32
+ expect(value).to eq([1, "2", 3])
33
+ end
34
+ end
35
+
36
+ it 'hash' do
37
+ expect(JQ('{"foo":100, "bar":"zoo"}').search('.')).to eq([{"foo" => 100, "bar" => "zoo"}])
38
+
39
+ JQ('{"foo":100, "bar":"zoo"}').search('.') do |value|
40
+ expect(value).to eq({"foo" => 100, "bar" => "zoo"})
41
+ end
42
+ end
43
+
44
+ it 'composition' do
45
+ src = <<-EOS
46
+ {
47
+ "glossary": {
48
+ "title": "example glossary",
49
+ "GlossDiv": {
50
+ "title": "S",
51
+ "GlossList": {
52
+ "GlossEntry": {
53
+ "ID": "SGML",
54
+ "SortAs": "SGML",
55
+ "GlossTerm": "Standard Generalized Markup Language",
56
+ "Acronym": "SGML",
57
+ "Abbrev": "ISO 8879:1986",
58
+ "GlossDef": {
59
+ "para": "A meta-markup language, used to create markup languages such as DocBook.",
60
+ "GlossSeeAlso": ["GML", "XML"]
61
+ },
62
+ "GlossSee": "markup"
63
+ }
64
+ }
65
+ }
66
+ }
67
+ }
68
+ EOS
69
+
70
+ expected = {
71
+ "glossary"=>
72
+ {"GlossDiv"=>
73
+ {"GlossList"=>
74
+ {"GlossEntry"=>
75
+ {"GlossSee"=>"markup",
76
+ "GlossDef"=>
77
+ {"GlossSeeAlso"=>["GML", "XML"],
78
+ "para"=>
79
+ "A meta-markup language, used to create markup languages such as DocBook."},
80
+ "Abbrev"=>"ISO 8879:1986",
81
+ "Acronym"=>"SGML",
82
+ "GlossTerm"=>"Standard Generalized Markup Language",
83
+ "SortAs"=>"SGML",
84
+ "ID"=>"SGML"}},
85
+ "title"=>"S"},
86
+ "title"=>"example glossary"}}
87
+
88
+ expect(JQ(src).search('.')).to eq([expected])
89
+
90
+ JQ(src).search('.') do |value|
91
+ expect(value).to eq(expected)
92
+ end
93
+ end
94
+
95
+ it 'parse_json => false' do
96
+ src = <<-EOS
97
+ {
98
+ "glossary": {
99
+ "title": "example glossary",
100
+ "GlossDiv": {
101
+ "title": "S",
102
+ "GlossList": {
103
+ "GlossEntry": {
104
+ "ID": "SGML",
105
+ "SortAs": "SGML",
106
+ "GlossTerm": "Standard Generalized Markup Language",
107
+ "Acronym": "SGML",
108
+ "Abbrev": "ISO 8879:1986",
109
+ "GlossDef": {
110
+ "para": "A meta-markup language, used to create markup languages such as DocBook.",
111
+ "GlossSeeAlso": ["GML", "XML"]
112
+ },
113
+ "GlossSee": "markup"
114
+ }
115
+ }
116
+ }
117
+ }
118
+ }
119
+ EOS
120
+
121
+ expected = '{"glossary":{"GlossDiv":{"GlossList":{"GlossEntry":{"GlossSee":"markup","GlossDef":{"GlossSeeAlso":["GML","XML"],"para":"A meta-markup language, used to create markup languages such as DocBook."},"Abbrev":"ISO 8879:1986","Acronym":"SGML","GlossTerm":"Standard Generalized Markup Language","SortAs":"SGML","ID":"SGML"}},"title":"S"},"title":"example glossary"}}'
122
+
123
+ expect(JQ(src, :parse_json => false).search('.')).to eq([expected])
124
+
125
+ JQ(src, :parse_json => false).search('.') do |value|
126
+ expect(value).to eq(expected)
127
+ end
128
+ end
129
+
130
+ it 'each value' do
131
+ src = <<-EOS
132
+ {"menu": {
133
+ "id": "file",
134
+ "value": "File",
135
+ "popup": {
136
+ "menuitem": [
137
+ {"value": "New", "onclick": "CreateNewDoc()"},
138
+ {"value": "Open", "onclick": "OpenDoc()"},
139
+ {"value": "Close", "onclick": "CloseDoc()"}
140
+ ]
141
+ }
142
+ }}
143
+ EOS
144
+
145
+ expect(JQ(src).search('.menu.popup.menuitem[].value')).to eq(["New", "Open", "Close"])
146
+ end
147
+
148
+ it 'compile error' do
149
+ expect {
150
+ JQ('{}').search('...')
151
+ }.to raise_error(JQ::Error)
152
+ end
153
+ end
@@ -0,0 +1,2 @@
1
+ $: << File.dirname(__FILE__) + '/../lib'
2
+ require 'jq'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-jq
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - winebarrel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-13 00:00:00.000000000 Z
11
+ date: 2013-11-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
@@ -52,7 +52,35 @@ dependencies:
52
52
  - - ! '>='
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
- description: Ruby binding for jq
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake-compiler
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ! '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ! '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ! '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ description: Ruby bindings for jq
56
84
  email: sgwr_dts@yahoo.co.jp
57
85
  executables: []
58
86
  extensions:
@@ -71,6 +99,8 @@ files:
71
99
  - lib/jq/parser.rb
72
100
  - lib/jq/version.rb
73
101
  - ruby-jq.gemspec
102
+ - spec/jq_spec.rb
103
+ - spec/spec_helper.rb
74
104
  homepage: https://bitbucket.org/winebarrel/ruby-jq
75
105
  licenses:
76
106
  - MIT
@@ -94,5 +124,5 @@ rubyforge_project:
94
124
  rubygems_version: 2.1.5
95
125
  signing_key:
96
126
  specification_version: 4
97
- summary: Ruby binding for jq
127
+ summary: Ruby bindings for jq
98
128
  test_files: []