array-where 1.0.0
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 +7 -0
- data/bin/example +3 -0
- data/lib/array-where.rb +5 -0
- data/lib/array/where.rb +21 -0
- data/lib/array/where/version.rb +5 -0
- data/spec/lib/array/where/version_spec.rb +7 -0
- data/spec/lib/array/where_spec.rb +48 -0
- data/spec/spec_helper.rb +4 -0
- metadata +126 -0
checksums.yaml
ADDED
@@ -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
|
data/bin/example
ADDED
data/lib/array-where.rb
ADDED
data/lib/array/where.rb
ADDED
@@ -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,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
|
data/spec/spec_helper.rb
ADDED
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:
|