array-where 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: c2727763cfd09a0c1a7c04911f5e50d21ed47679
4
+ data.tar.gz: f19ac664c407cfc357bb2c0d1960b2eba0758f72
5
+ SHA512:
6
+ metadata.gz: 3aecbb7e7380ed5564942b3d1567e0b27fa6d9f3614d2fd7466dfd0647336f76fd8432c4073da44bd0fce8b0ef5583110ab14754240be8e54401270735fcd82d
7
+ data.tar.gz: e3f763e02409f7d6678e4bf2f97f26f84be4ecfb6090860c933462409b129c830750419a6620ce4d586c8b9d86c4569c0e4702df3fd104800b3e17d7f30df79a
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "array/where"
@@ -0,0 +1,5 @@
1
+ require_relative "array/where"
2
+
3
+ class Array
4
+ include Array::Where
5
+ end
@@ -0,0 +1,21 @@
1
+ class Array
2
+ module Where
3
+ require_relative "where/version"
4
+
5
+ def where(query)
6
+ self.select do |item|
7
+ query.all? do |method, value|
8
+ item.send(method) == value
9
+ end
10
+ end
11
+ end
12
+
13
+ def wherein(query)
14
+ self.select do |item|
15
+ query.all? do |method, value|
16
+ value.call(item.send(method))
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,5 @@
1
+ class Array
2
+ module Where
3
+ VERSION = "1.0.0"
4
+ end
5
+ end
@@ -0,0 +1,7 @@
1
+ require "spec_helper"
2
+
3
+ describe Array::Where::VERSION do
4
+ it "should be a string" do
5
+ expect(Array::Where::VERSION).to be_kind_of(String)
6
+ end
7
+ end
@@ -0,0 +1,48 @@
1
+ require "spec_helper"
2
+
3
+ describe Array::Where do
4
+ let(:john) do OpenStruct.new(name: "John", age: 21) end
5
+ let(:eve) do OpenStruct.new(name: "Eve", age: 24) end
6
+ let(:james) do OpenStruct.new(name: "James", age: 21) end
7
+ let(:array) do [john, eve, james] end
8
+
9
+ describe "#where" do
10
+ let(:where) do array.where(query) end
11
+
12
+ context "with one condition" do
13
+ let(:query) do { age: 21 } end
14
+
15
+ it "returns any items that match" do
16
+ expect(where).to contain_exactly(john, james)
17
+ end
18
+ end
19
+
20
+ context "with multiple condition" do
21
+ let(:query) do { name: "Eve", age: 24 } end
22
+
23
+ it "returns any items that match"do
24
+ expect(where).to contain_exactly(eve)
25
+ end
26
+ end
27
+ end
28
+
29
+ describe "#wherein" do
30
+ let(:wherein) do array.wherein(query) end
31
+
32
+ context "with one condition" do
33
+ let(:query) do { age: ->(age) { age > 22 } } end
34
+
35
+ it "returns any items that match" do
36
+ expect(wherein).to contain_exactly(eve)
37
+ end
38
+ end
39
+
40
+ context "with multiple condition" do
41
+ let(:query) do { age: ->(age) { age < 22 }, name: ->(name) { name.include?("J") } } end
42
+
43
+ it "returns any items that match" do
44
+ expect(wherein).to contain_exactly(john, james)
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,4 @@
1
+ require "pry"
2
+ require "rspec"
3
+ require "array-where"
4
+ require "ostruct"
metadata ADDED
@@ -0,0 +1,126 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: array-where
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Kurtis Rainbolt-Greene
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-08-15 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '3.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '10.1'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '10.1'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.9'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.9'
69
+ - !ruby/object:Gem::Dependency
70
+ name: pry-doc
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.6'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.6'
83
+ description: Query your arrays.
84
+ email:
85
+ - me@kurtisrainboltgreene.name
86
+ executables:
87
+ - example
88
+ extensions: []
89
+ extra_rdoc_files: []
90
+ files:
91
+ - bin/example
92
+ - lib/array-where.rb
93
+ - lib/array/where.rb
94
+ - lib/array/where/version.rb
95
+ - spec/lib/array/where/version_spec.rb
96
+ - spec/lib/array/where_spec.rb
97
+ - spec/spec_helper.rb
98
+ homepage: http://krainboltgreene.github.io/array/where
99
+ licenses:
100
+ - MIT
101
+ metadata: {}
102
+ post_install_message:
103
+ rdoc_options: []
104
+ require_paths:
105
+ - lib
106
+ required_ruby_version: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ required_rubygems_version: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - ">="
114
+ - !ruby/object:Gem::Version
115
+ version: '0'
116
+ requirements: []
117
+ rubyforge_project:
118
+ rubygems_version: 2.2.2
119
+ signing_key:
120
+ specification_version: 4
121
+ summary: Query your arrays.
122
+ test_files:
123
+ - spec/lib/array/where/version_spec.rb
124
+ - spec/lib/array/where_spec.rb
125
+ - spec/spec_helper.rb
126
+ has_rdoc: