looksist 0.0.4 → 0.0.5
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 +4 -4
- data/lib/looksist.rb +2 -0
- data/lib/looksist/hashed.rb +19 -5
- data/lib/looksist/version.rb +1 -1
- data/looksist.gemspec +2 -0
- data/spec/hashed_spec.rb +38 -10
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 030f8794b73dd763721680befd241cb03ec7accd
|
4
|
+
data.tar.gz: d2733173bbe4358c815292d6688f9b3a0e9605b4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c40ccf107034ee352a64e22da82c4c481b0b1bff0fec2ae856bc6a7386ec57ceb2d9d4ba608c9ac614fc7d957d79a150f4ab342f2c9738b064e4cd39277282c6
|
7
|
+
data.tar.gz: a56ca3e2de786acdf5189258ca5ae744b5b28456aecb2d0228c54e46c7bf4395d7d4883636cf06c98564e6d46a823e277a149ee6951cfacb6b61e32f0e5b5347
|
data/lib/looksist.rb
CHANGED
data/lib/looksist/hashed.rb
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
require 'jsonpath'
|
2
|
+
require 'json'
|
3
|
+
|
1
4
|
module Looksist
|
2
5
|
module Hashed
|
3
6
|
extend ActiveSupport::Concern
|
@@ -18,14 +21,16 @@ module Looksist
|
|
18
21
|
define_method("#{opts[:after]}_with_inject") do |*args|
|
19
22
|
hash = send("#{opts[:after]}_without_inject".to_sym, *args)
|
20
23
|
self.class.instance_variable_get(:@rules)[opts[:after]].each do |opts|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
24
|
+
if opts[:at].is_a? String
|
25
|
+
hash = JsonPath.for(hash.with_indifferent_access).gsub(opts[:at]) do |i|
|
26
|
+
inject_attributes_at(i, opts)
|
27
|
+
end.to_hash.deep_symbolize_keys
|
28
|
+
else
|
29
|
+
inject_attributes_at(hash[opts[:at]], opts)
|
30
|
+
end
|
25
31
|
end
|
26
32
|
hash
|
27
33
|
end
|
28
|
-
|
29
34
|
alias_method_chain opts[:after], :inject
|
30
35
|
end
|
31
36
|
end
|
@@ -34,8 +39,17 @@ module Looksist
|
|
34
39
|
base.class_attribute :rules
|
35
40
|
end
|
36
41
|
|
42
|
+
private
|
37
43
|
def entity(entity_id)
|
38
44
|
entity_id.to_s.gsub('_id', '')
|
39
45
|
end
|
46
|
+
|
47
|
+
def inject_attributes_at(hash_offset, opts)
|
48
|
+
keys = hash_offset[opts[:using]]
|
49
|
+
entity_name = entity(opts[:using])
|
50
|
+
values = Hashed.redis_service.send("#{entity_name}_for", keys)
|
51
|
+
hash_offset[opts[:populate]] = values
|
52
|
+
hash_offset
|
53
|
+
end
|
40
54
|
end
|
41
55
|
end
|
data/lib/looksist/version.rb
CHANGED
data/looksist.gemspec
CHANGED
data/spec/hashed_spec.rb
CHANGED
@@ -17,6 +17,34 @@ describe Looksist::Hashed do
|
|
17
17
|
|
18
18
|
|
19
19
|
context 'inject ' do
|
20
|
+
it 'should be capable to deep lookup and inject' do
|
21
|
+
class DeepHash
|
22
|
+
include Looksist::Hashed
|
23
|
+
|
24
|
+
def metrics
|
25
|
+
{
|
26
|
+
table: {
|
27
|
+
inner_table: {
|
28
|
+
employee_id: [10, 20]
|
29
|
+
}
|
30
|
+
}
|
31
|
+
}
|
32
|
+
end
|
33
|
+
|
34
|
+
inject after: :metrics, at: '$.table.inner_table', using: :employee_id, populate: :employee_name
|
35
|
+
end
|
36
|
+
|
37
|
+
expect(@mock).to receive(:get).with('employees/10').and_return(OpenStruct.new(value: 'emp 1'))
|
38
|
+
expect(@mock).to receive(:get).with('employees/20').and_return(OpenStruct.new(value: 'emp 2'))
|
39
|
+
|
40
|
+
expect(DeepHash.new.metrics).to eq({table: {
|
41
|
+
inner_table: {
|
42
|
+
employee_id: [10, 20],
|
43
|
+
employee_name: ['emp 1', 'emp 2']
|
44
|
+
}
|
45
|
+
}})
|
46
|
+
end
|
47
|
+
|
20
48
|
it 'should inject single attribute to an existing hash' do
|
21
49
|
class HashService1
|
22
50
|
include Looksist::Hashed
|
@@ -32,8 +60,8 @@ describe Looksist::Hashed do
|
|
32
60
|
inject after: :metrics, at: :table, using: :employee_id, populate: :employee_name
|
33
61
|
end
|
34
62
|
|
35
|
-
expect(@mock).to receive(:get).with('employees/1').and_return(OpenStruct.new(value:'emp 1'))
|
36
|
-
expect(@mock).to receive(:get).with('employees/2').and_return(OpenStruct.new(value:'emp 2'))
|
63
|
+
expect(@mock).to receive(:get).with('employees/1').and_return(OpenStruct.new(value: 'emp 1'))
|
64
|
+
expect(@mock).to receive(:get).with('employees/2').and_return(OpenStruct.new(value: 'emp 2'))
|
37
65
|
|
38
66
|
expect(HashService1.new.metrics).to eq({table: {
|
39
67
|
employee_id: [1, 2],
|
@@ -58,11 +86,11 @@ describe Looksist::Hashed do
|
|
58
86
|
inject after: :metrics, at: :table, using: :employer_id, populate: :employer_name
|
59
87
|
end
|
60
88
|
|
61
|
-
expect(@mock).to receive(:get).with('employees/5').and_return(OpenStruct.new(value:'emp 5'))
|
62
|
-
expect(@mock).to receive(:get).with('employees/6').and_return(OpenStruct.new(value:'emp 6'))
|
89
|
+
expect(@mock).to receive(:get).with('employees/5').and_return(OpenStruct.new(value: 'emp 5'))
|
90
|
+
expect(@mock).to receive(:get).with('employees/6').and_return(OpenStruct.new(value: 'emp 6'))
|
63
91
|
|
64
|
-
expect(@mock).to receive(:get).with('employers/3').and_return(OpenStruct.new(value:'empr 3'))
|
65
|
-
expect(@mock).to receive(:get).with('employers/4').and_return(OpenStruct.new(value:'empr 4'))
|
92
|
+
expect(@mock).to receive(:get).with('employers/3').and_return(OpenStruct.new(value: 'empr 3'))
|
93
|
+
expect(@mock).to receive(:get).with('employers/4').and_return(OpenStruct.new(value: 'empr 4'))
|
66
94
|
|
67
95
|
expect(HashService.new.metrics).to eq({table: {
|
68
96
|
employee_id: [5, 6],
|
@@ -99,11 +127,11 @@ describe Looksist::Hashed do
|
|
99
127
|
inject after: :stock, at: :table, using: :dc_id, populate: :dc_name
|
100
128
|
end
|
101
129
|
|
102
|
-
expect(@mock).to receive(:get).with('shrinks/1').and_return(OpenStruct.new(value:'shrink 1'))
|
103
|
-
expect(@mock).to receive(:get).with('shrinks/2').and_return(OpenStruct.new(value:'shrink 2'))
|
130
|
+
expect(@mock).to receive(:get).with('shrinks/1').and_return(OpenStruct.new(value: 'shrink 1'))
|
131
|
+
expect(@mock).to receive(:get).with('shrinks/2').and_return(OpenStruct.new(value: 'shrink 2'))
|
104
132
|
|
105
|
-
expect(@mock).to receive(:get).with('dcs/7').and_return(OpenStruct.new(value:'dc 7'))
|
106
|
-
expect(@mock).to receive(:get).with('dcs/8').and_return(OpenStruct.new(value:'dc 8'))
|
133
|
+
expect(@mock).to receive(:get).with('dcs/7').and_return(OpenStruct.new(value: 'dc 7'))
|
134
|
+
expect(@mock).to receive(:get).with('dcs/8').and_return(OpenStruct.new(value: 'dc 8'))
|
107
135
|
|
108
136
|
hash_service_super = HashServiceSuper.new
|
109
137
|
expect(hash_service_super.shrinkage).to eq({table: {
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: looksist
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- RC
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-10-
|
12
|
+
date: 2014-10-17 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -137,6 +137,20 @@ dependencies:
|
|
137
137
|
- - ">="
|
138
138
|
- !ruby/object:Gem::Version
|
139
139
|
version: '0'
|
140
|
+
- !ruby/object:Gem::Dependency
|
141
|
+
name: jsonpath
|
142
|
+
requirement: !ruby/object:Gem::Requirement
|
143
|
+
requirements:
|
144
|
+
- - "~>"
|
145
|
+
- !ruby/object:Gem::Version
|
146
|
+
version: 0.5.6
|
147
|
+
type: :runtime
|
148
|
+
prerelease: false
|
149
|
+
version_requirements: !ruby/object:Gem::Requirement
|
150
|
+
requirements:
|
151
|
+
- - "~>"
|
152
|
+
- !ruby/object:Gem::Version
|
153
|
+
version: 0.5.6
|
140
154
|
description: Redis backed lookup for your her models
|
141
155
|
email:
|
142
156
|
- rmchandru@thoughtworks.com
|