plucky 0.6.6 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +13 -5
- data/.rspec +1 -0
- data/.travis.yml +1 -0
- data/Gemfile +3 -3
- data/lib/plucky/criteria_hash.rb +9 -2
- data/lib/plucky/normalizers/criteria_hash_value.rb +3 -1
- data/lib/plucky/normalizers/options_hash_value.rb +0 -0
- data/lib/plucky/normalizers/sort_value.rb +0 -0
- data/lib/plucky/options_hash.rb +0 -0
- data/lib/plucky/pagination/collection.rb +1 -1
- data/lib/plucky/version.rb +1 -1
- data/spec/functional/options_hash_spec.rb +0 -0
- data/spec/plucky/criteria_hash_spec.rb +31 -1
- data/spec/plucky/normalizers/criteria_hash_value_spec.rb +1 -1
- data/spec/plucky/pagination/collection_spec.rb +5 -0
- data/spec/plucky_spec.rb +4 -4
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,15 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
YjkzYmEyZjI0NmViZjk3Nzc0N2JlODc5Y2JiZmZiNzhhOWQ4ZTY1OA==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
MmNmOGM2N2RmYmRmYjllN2Q2MjRjZjQyNzAwYzhkMmZjMzZiN2JkYw==
|
5
7
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
MzNiMDVhYTk0MDBmMzI0NmM5ZGNiMzcwZTkwNDEwZGQ3N2E1NTlhMWM3YjMz
|
10
|
+
NmNjNDliOTc0OTUxNzFmNDU5YWE4N2Q0NDc1ODMyMjMxZDljOWJmNWRiN2Mw
|
11
|
+
ZmUwNTQ4NTA5ZGFlYWFmZTA5M2E5ZGFjYTA4ZjRkMDcxZGIxNDk=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
NjExZmVhZjMyNDE2MTk2ODY1ZmRhMTdhYzdkNTliNDk1NmNkZTY3M2NkMTIy
|
14
|
+
OTgwNjZiNDE0NDUyYzc3YzdmYWQ1MmE4NWU5MDFiZWJiNzkxYjFjYjAxNjFk
|
15
|
+
YWVlOTA0YjA0NjI1YTkwMTJkNThjZmI1NTQ0MDI1OTYwNGM0OWU=
|
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--color
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
2
|
gemspec
|
3
3
|
|
4
|
-
gem 'bson_ext', '~> 1.5'
|
4
|
+
gem 'bson_ext', '~> 1.5', :platform => :mri
|
5
5
|
gem 'rake'
|
6
6
|
|
7
|
-
group :performance
|
8
|
-
gem 'perftools.rb', :require => 'perftools'
|
7
|
+
group :performance do
|
8
|
+
gem 'perftools.rb', :require => 'perftools', :platform => :mri
|
9
9
|
end
|
10
10
|
|
11
11
|
group(:test) do
|
data/lib/plucky/criteria_hash.rb
CHANGED
@@ -125,7 +125,9 @@ module Plucky
|
|
125
125
|
old_is_hash = oldval.instance_of? Hash
|
126
126
|
new_is_hash = newval.instance_of? Hash
|
127
127
|
|
128
|
-
if
|
128
|
+
if oldval == newval
|
129
|
+
oldval
|
130
|
+
elsif old_is_hash && new_is_hash
|
129
131
|
hash_merge(oldval, newval)
|
130
132
|
elsif old_is_hash
|
131
133
|
modifier_merge(oldval, newval)
|
@@ -171,7 +173,12 @@ module Plucky
|
|
171
173
|
# of the object id. This makes sure it is an array of object ids, not the
|
172
174
|
# guts of the object id.
|
173
175
|
def array(value)
|
174
|
-
|
176
|
+
case value
|
177
|
+
when nil, BSON::ObjectId
|
178
|
+
[value]
|
179
|
+
else
|
180
|
+
Array(value)
|
181
|
+
end
|
175
182
|
end
|
176
183
|
|
177
184
|
# Private
|
@@ -1,10 +1,12 @@
|
|
1
|
+
require 'set'
|
2
|
+
|
1
3
|
module Plucky
|
2
4
|
module Normalizers
|
3
5
|
class CriteriaHashValue
|
4
6
|
|
5
7
|
# Internal: Used by normalized_value to determine if we need to run the
|
6
8
|
# value through another criteria hash to normalize it.
|
7
|
-
NestingOperators = [:$or, :$and, :$nor]
|
9
|
+
NestingOperators = Set[:$or, :$and, :$nor]
|
8
10
|
|
9
11
|
def initialize(criteria_hash)
|
10
12
|
@criteria_hash = criteria_hash
|
File without changes
|
File without changes
|
data/lib/plucky/options_hash.rb
CHANGED
File without changes
|
data/lib/plucky/version.rb
CHANGED
File without changes
|
@@ -90,7 +90,7 @@ describe Plucky::CriteriaHash do
|
|
90
90
|
it "uniques matching key values" do
|
91
91
|
c1 = described_class.new(:foo => 'bar')
|
92
92
|
c2 = described_class.new(:foo => 'bar')
|
93
|
-
c1.merge(c2).source.should eq(:foo =>
|
93
|
+
c1.merge(c2).source.should eq(:foo => 'bar')
|
94
94
|
end
|
95
95
|
|
96
96
|
it "correctly merges arrays and non-arrays" do
|
@@ -148,6 +148,36 @@ describe Plucky::CriteriaHash do
|
|
148
148
|
c1[:foo].should == 'bar'
|
149
149
|
end
|
150
150
|
|
151
|
+
it "merges two hashes with the same key, but nil values as nil" do
|
152
|
+
c1 = described_class.new(:foo => nil)
|
153
|
+
c2 = described_class.new(:foo => nil)
|
154
|
+
c1.merge(c2).source.should == { :foo => nil }
|
155
|
+
end
|
156
|
+
|
157
|
+
it "merges two hashes with the same key, but false values as false" do
|
158
|
+
c1 = described_class.new(:foo => false)
|
159
|
+
c2 = described_class.new(:foo => false)
|
160
|
+
c1.merge(c2).source.should == { :foo => false }
|
161
|
+
end
|
162
|
+
|
163
|
+
it "merges two hashes with the same key, but different values with $in" do
|
164
|
+
c1 = described_class.new(:foo => false)
|
165
|
+
c2 = described_class.new(:foo => true)
|
166
|
+
c1.merge(c2).source.should == { :foo => { :'$in' => [false, true] } }
|
167
|
+
end
|
168
|
+
|
169
|
+
it "merges two hashes with different keys and different values properly" do
|
170
|
+
c1 = described_class.new(:foo => 1)
|
171
|
+
c2 = described_class.new(:bar => 2)
|
172
|
+
c1.merge(c2).source.should == { :foo => 1, :bar => 2 }
|
173
|
+
end
|
174
|
+
|
175
|
+
it "merges two sets" do
|
176
|
+
c1 = described_class.new(:foo => Set.new([1, 2]))
|
177
|
+
c2 = described_class.new(:foo => Set.new([2, 3]))
|
178
|
+
c1.merge(c2).source.should == { :foo => { :'$in' => [1,2,3] } }
|
179
|
+
end
|
180
|
+
|
151
181
|
context "given multiple $or clauses" do
|
152
182
|
before do
|
153
183
|
@c1 = described_class.new(:$or => [{:a => 1}, {:b => 2}])
|
@@ -155,7 +155,7 @@ describe Plucky::Normalizers::CriteriaHashValue do
|
|
155
155
|
|
156
156
|
context "nested clauses" do
|
157
157
|
it "knows constant array of operators that take nested queries" do
|
158
|
-
described_class::NestingOperators.should == [:$or, :$and, :$nor]
|
158
|
+
described_class::NestingOperators.should == Set[:$or, :$and, :$nor]
|
159
159
|
end
|
160
160
|
|
161
161
|
described_class::NestingOperators.each do |operator|
|
@@ -26,5 +26,10 @@ describe Plucky::Pagination::Collection do
|
|
26
26
|
@object.size.should == 4
|
27
27
|
@object.select { |o| o > 2 }.should == [3, 4]
|
28
28
|
end
|
29
|
+
|
30
|
+
it "delegates missing methods to the paginator" do
|
31
|
+
@paginator.should_receive(:blather_matter).with('hello', :xyz, 4)
|
32
|
+
subject.blather_matter('hello', :xyz, 4)
|
33
|
+
end
|
29
34
|
end
|
30
35
|
end
|
data/spec/plucky_spec.rb
CHANGED
@@ -31,21 +31,21 @@ describe Plucky do
|
|
31
31
|
describe ".modifier?" do
|
32
32
|
context "with a string" do
|
33
33
|
it "returns true if modifier" do
|
34
|
-
Plucky.modifier?('$in').should
|
34
|
+
Plucky.modifier?('$in').should == true
|
35
35
|
end
|
36
36
|
|
37
37
|
it "returns false if not modifier" do
|
38
|
-
Plucky.modifier?('nope').should
|
38
|
+
Plucky.modifier?('nope').should == false
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
42
42
|
context "with a symbol" do
|
43
43
|
it "returns true if modifier" do
|
44
|
-
Plucky.modifier?(:$in).should
|
44
|
+
Plucky.modifier?(:$in).should == true
|
45
45
|
end
|
46
46
|
|
47
47
|
it "returns false if not modifier" do
|
48
|
-
Plucky.modifier?(:nope).should
|
48
|
+
Plucky.modifier?(:nope).should == false
|
49
49
|
end
|
50
50
|
end
|
51
51
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: plucky
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Nunemaker
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-03-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mongo
|
@@ -32,6 +32,7 @@ extensions: []
|
|
32
32
|
extra_rdoc_files: []
|
33
33
|
files:
|
34
34
|
- .gitignore
|
35
|
+
- .rspec
|
35
36
|
- .travis.yml
|
36
37
|
- Gemfile
|
37
38
|
- Guardfile
|
@@ -91,17 +92,17 @@ require_paths:
|
|
91
92
|
- lib
|
92
93
|
required_ruby_version: !ruby/object:Gem::Requirement
|
93
94
|
requirements:
|
94
|
-
- - '>='
|
95
|
+
- - ! '>='
|
95
96
|
- !ruby/object:Gem::Version
|
96
97
|
version: '0'
|
97
98
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
98
99
|
requirements:
|
99
|
-
- - '>='
|
100
|
+
- - ! '>='
|
100
101
|
- !ruby/object:Gem::Version
|
101
102
|
version: '0'
|
102
103
|
requirements: []
|
103
104
|
rubyforge_project:
|
104
|
-
rubygems_version: 2.0
|
105
|
+
rubygems_version: 2.5.0
|
105
106
|
signing_key:
|
106
107
|
specification_version: 4
|
107
108
|
summary: Thin layer over the ruby driver that allows you to quickly grab hold of your
|
@@ -124,4 +125,3 @@ test_files:
|
|
124
125
|
- spec/plucky_spec.rb
|
125
126
|
- spec/symbol_operator_spec.rb
|
126
127
|
- spec/symbol_spec.rb
|
127
|
-
has_rdoc:
|