ruby-jq 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +8 -8
- data/README.md +3 -1
- data/Rakefile +9 -0
- data/ext/jq_core.c +2 -5
- data/lib/jq/version.rb +1 -1
- data/ruby-jq.gemspec +4 -2
- data/spec/jq_spec.rb +153 -0
- data/spec/spec_helper.rb +2 -0
- metadata +34 -4
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
ZWVjZTVhZmQ4MzYwZTI4OTU0YWNhMmMxMmI3MjIzMjU1MmE0Y2Y4Nw==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
OGMwZjZhODEzYWFjMjhmNmE4NGZiM2YyOTFlZDRkNmM0MDRhZTFhOA==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZjZiODYyOTRiYTMzNDZjMWE1OTY4ZGIxMzE3MmMwZjA5M2ZiODAyODhiYzY4
|
10
|
+
YTNlNDMxNWVhYjBlY2ExMjI4MWJlMjhkMDJkMjg1YWQzNjQxNWJjYTY2MmEx
|
11
|
+
ODExNzJhZmI2OWJhY2NmNDI3MjYyYWQxMjhiYjUwMWY5Njg1ZWU=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
OWRiOTg4OTU5ZmExNzRlYWEwMWQxNTg2YTYxYzNkNDcyYjgwY2M2ZDQ3YzNi
|
14
|
+
NGRiZjA1ZjAxYzczYTY2M2IwN2VkNjg4YmQzNWUwYzQ5NzE0NDJlM2IyNDg3
|
15
|
+
MTdmY2MzMjMzYTY3YzQzOWJmN2Y0ZjZiNTgzOTE4YTEyM2Q5ZTk=
|
data/README.md
CHANGED
@@ -1,9 +1,11 @@
|
|
1
1
|
# ruby-jq
|
2
2
|
|
3
|
-
Ruby
|
3
|
+
Ruby bindings for jq.
|
4
4
|
|
5
5
|
see [http://stedolan.github.io/jq/](http://stedolan.github.io/jq/).
|
6
6
|
|
7
|
+
[](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
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,
|
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
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
|
12
|
-
spec.summary = "Ruby
|
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
|
data/spec/spec_helper.rb
ADDED
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.
|
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-
|
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
|
-
|
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
|
127
|
+
summary: Ruby bindings for jq
|
98
128
|
test_files: []
|