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 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: []