looksist 0.3.5 → 0.3.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5d8ea751e7e460f9cefd33a35bde5d1ec4e1b3be
4
- data.tar.gz: 19a868515f44ac3daa6861b22f29a6ea7c67366a
3
+ metadata.gz: 917b96f2edca2099bafd294b7e2eee0df32bb0c7
4
+ data.tar.gz: b1de0ae1e63f3035a87963d689b7368e5092effd
5
5
  SHA512:
6
- metadata.gz: d44bdc278b7e5f4d6fec53b2ba1954f10ce50f2580d594125ad0a3477133c7ecc055ede69cecc2da78a45d46b520d44552baa09d565889dd3d2b834f1ae36ab8
7
- data.tar.gz: 6e0062819715018e8dd6dceeace7e94d7d3511d9d233d8fa1c09402043a625e6f2da46669ca52fb3566870e8c80481a6ab1fc12ac340f566bcacf95f20d04bf6
6
+ metadata.gz: 715905bf10eac5ba3961d3834692663014dc58cc5f5dc569aec580a265424b0069a53712b0b65a404f895e92b7c202b2723b3482a16d3d39bbbd490591be9722
7
+ data.tar.gz: cdda079c645c63cc019c46461e96b61d8f27bea4c2feb6745a95540906551f9abad14664f51cf60b9e1c12fa41948f90d3eebd64c83d6b631b3c2eace957d0fd
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- ruby-2.1.2
1
+ ruby-2.0.0-p247
@@ -99,11 +99,11 @@ module Looksist
99
99
  def inject_attributes_for_array(array_of_hashes, opts)
100
100
  entity_name = __entity__(opts[:bucket_name] || opts[:using])
101
101
  modified_array = if opts[:at].nil?
102
- array_of_hashes.map(&:values)
103
- else
104
- json_path = JsonPath.new("#{opts[:at]}..#{opts[:using]}")
105
- json_path.on(array_of_hashes.to_json)
106
- end
102
+ array_of_hashes.map(&:values)
103
+ else
104
+ json_path = JsonPath.new("#{opts[:at]}..#{opts[:using]}")
105
+ json_path.on(array_of_hashes.to_json)
106
+ end
107
107
  keys = modified_array.flatten.compact.uniq
108
108
  values = Hash[keys.zip(Looksist.redis_service.send("#{entity_name}_for", keys))]
109
109
  opts[:populate].is_a?(Array) ? composite_attribute_lookup(array_of_hashes, opts, values) : single_attribute_lookup_for_array(array_of_hashes, opts, values)
@@ -136,11 +136,33 @@ module Looksist
136
136
  end
137
137
 
138
138
  def composite_attribute_lookup(array_of_hashes, opts, values)
139
- array_of_hashes.each do |elt|
140
- opts[:populate].each do |_key|
139
+ array_of_hashes.collect do |elt|
140
+ if opts[:at].present?
141
+ JsonPath.for(elt.with_indifferent_access).gsub!(opts[:at]) do |node|
142
+ if node.is_a? Array
143
+ node.collect do |x|
144
+ opts[:populate].collect do |_key|
145
+ alias_method = find_alias(opts[:as], _key)
146
+ parsed_key = JSON.parse(values[x.with_indifferent_access[opts[:using]]]).deep_symbolize_keys
147
+ x[alias_method] = parsed_key[_key]
148
+ end
149
+ end
150
+ else
151
+ parsed_key = JSON.parse(values[node.with_indifferent_access[opts[:using]]]).deep_symbolize_keys
152
+ opts[:populate].collect do |_key|
153
+ alias_method = find_alias(opts[:as], _key)
154
+ node[alias_method] = parsed_key[_key]
155
+ end
156
+ end
157
+ node
158
+ end.to_hash.deep_symbolize_keys
159
+ else
141
160
  parsed_key = JSON.parse(values[elt[opts[:using]]]).deep_symbolize_keys
142
- alias_method = find_alias(opts[:as], _key)
143
- elt[alias_method] = parsed_key[_key]
161
+ opts[:populate].collect do |_key|
162
+ alias_method = find_alias(opts[:as], _key)
163
+ elt[alias_method] = parsed_key[_key]
164
+ end
165
+ elt
144
166
  end
145
167
  end
146
168
  end
@@ -1,3 +1,3 @@
1
1
  module Lookist
2
- VERSION = '0.3.5'
2
+ VERSION = '0.3.6'
3
3
  end
data/looksist.gemspec CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ['lib']
20
20
 
21
- spec.add_development_dependency 'bundler', '~> 1.6'
21
+ spec.add_development_dependency 'bundler'
22
22
  spec.add_development_dependency 'pry'
23
23
  spec.add_development_dependency 'rake'
24
24
  spec.add_development_dependency 'rspec'
@@ -439,7 +439,7 @@ describe Looksist::Hashed do
439
439
  ]
440
440
  end
441
441
 
442
- inject after: :metrics, at: '$', using: :hero_id, populate: [:name, :mnemonic], as: {name: 'hero_name', mnemonic: 'hero_mnemonic'}
442
+ inject after: :metrics, using: :hero_id, populate: [:name, :mnemonic], as: {name: 'hero_name', mnemonic: 'hero_mnemonic'}
443
443
  end
444
444
  js1 = {name: 'Rajini', mnemonic: 'SuperStart'}.to_json
445
445
  js2 = {name: 'Kamal', mnemonic: 'Ulaganayagan'}.to_json
@@ -600,16 +600,34 @@ describe Looksist::Hashed do
600
600
  class DeepLookUpAtArrayOfHash
601
601
  include Looksist
602
602
  def self.articles
603
- [{
604
- articles:[{article_id: 1}, {article_id: 2}]
605
- }]
603
+ [{:articles => [{:article_id => 1, :sub_category_id => 8001, :supplier_id => 158782, :sub_family_id => 18001}]}]
606
604
  end
607
- inject after: :articles, at:'$..articles', using: :article_id, populate: :name
605
+ inject after: :articles, at:'$..articles', using: :article_id, populate: :name, as: {name: 'description'}
606
+ inject after: :articles, at:'$..articles', using: :sub_category_id, populate: :sub_category_name
608
607
  end
609
608
 
610
- expect(@mock).to receive(:mget).once.with(*%w(articles/1 articles/2)).and_return(['a','b'])
609
+ expect(@mock).to receive(:mget).once.with(*%w(articles/1)).and_return(['A'])
610
+ expect(@mock).to receive(:mget).once.with(*%w(sub_categories/8001)).and_return(['B'])
611
611
 
612
- expect(DeepLookUpAtArrayOfHash.articles).to eq([{articles:[{article_id: 1, name:'a'}, {article_id:2, name:'b'}]}])
612
+ expect(DeepLookUpAtArrayOfHash.articles).to eq([{:articles => [{:article_id => 1, :description=> 'A', :sub_category_id => 8001,
613
+ :sub_category_name => 'B',
614
+ :supplier_id => 158782, :sub_family_id => 18001}]}])
615
+
616
+ end
617
+
618
+ it'should work for nested injection for array of hash for multiple attributes' do
619
+ class DeepLookUpAtArrayOfHashMultiple
620
+ include Looksist
621
+ def self.articles
622
+ [{:articles => [{:article_id => 1, :sub_category_id => 8001, :supplier_id => 158782, :sub_family_id => 18001}]}]
623
+ end
624
+ inject after: :articles, at:'$..articles', using: :article_id, populate: [:name,:weight]
625
+ end
626
+
627
+ expect(@mock).to receive(:mget).once.with(*%w(articles/1)).and_return([{name:'A', weight:1}.to_json])
628
+
629
+ expect(DeepLookUpAtArrayOfHashMultiple.articles).to eq([{:articles => [{:article_id => 1, :name=> 'A',:weight=> 1, :sub_category_id => 8001,
630
+ :supplier_id => 158782, :sub_family_id => 18001}]}])
613
631
 
614
632
  end
615
633
  end
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.3.5
4
+ version: 0.3.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - RC
@@ -15,168 +15,168 @@ dependencies:
15
15
  name: bundler
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - "~>"
18
+ - - '>='
19
19
  - !ruby/object:Gem::Version
20
- version: '1.6'
20
+ version: '0'
21
21
  type: :development
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - "~>"
25
+ - - '>='
26
26
  - !ruby/object:Gem::Version
27
- version: '1.6'
27
+ version: '0'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: pry
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - ">="
32
+ - - '>='
33
33
  - !ruby/object:Gem::Version
34
34
  version: '0'
35
35
  type: :development
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - ">="
39
+ - - '>='
40
40
  - !ruby/object:Gem::Version
41
41
  version: '0'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: rake
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - ">="
46
+ - - '>='
47
47
  - !ruby/object:Gem::Version
48
48
  version: '0'
49
49
  type: :development
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - ">="
53
+ - - '>='
54
54
  - !ruby/object:Gem::Version
55
55
  version: '0'
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: rspec
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - ">="
60
+ - - '>='
61
61
  - !ruby/object:Gem::Version
62
62
  version: '0'
63
63
  type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - ">="
67
+ - - '>='
68
68
  - !ruby/object:Gem::Version
69
69
  version: '0'
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: activesupport
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
- - - ">="
74
+ - - '>='
75
75
  - !ruby/object:Gem::Version
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
- - - ">="
81
+ - - '>='
82
82
  - !ruby/object:Gem::Version
83
83
  version: '0'
84
84
  - !ruby/object:Gem::Dependency
85
85
  name: activemodel
86
86
  requirement: !ruby/object:Gem::Requirement
87
87
  requirements:
88
- - - ">="
88
+ - - '>='
89
89
  - !ruby/object:Gem::Version
90
90
  version: '0'
91
91
  type: :development
92
92
  prerelease: false
93
93
  version_requirements: !ruby/object:Gem::Requirement
94
94
  requirements:
95
- - - ">="
95
+ - - '>='
96
96
  - !ruby/object:Gem::Version
97
97
  version: '0'
98
98
  - !ruby/object:Gem::Dependency
99
99
  name: her
100
100
  requirement: !ruby/object:Gem::Requirement
101
101
  requirements:
102
- - - ">="
102
+ - - '>='
103
103
  - !ruby/object:Gem::Version
104
104
  version: '0'
105
105
  type: :development
106
106
  prerelease: false
107
107
  version_requirements: !ruby/object:Gem::Requirement
108
108
  requirements:
109
- - - ">="
109
+ - - '>='
110
110
  - !ruby/object:Gem::Version
111
111
  version: '0'
112
112
  - !ruby/object:Gem::Dependency
113
113
  name: cucumber
114
114
  requirement: !ruby/object:Gem::Requirement
115
115
  requirements:
116
- - - ">="
116
+ - - '>='
117
117
  - !ruby/object:Gem::Version
118
118
  version: '0'
119
119
  type: :development
120
120
  prerelease: false
121
121
  version_requirements: !ruby/object:Gem::Requirement
122
122
  requirements:
123
- - - ">="
123
+ - - '>='
124
124
  - !ruby/object:Gem::Version
125
125
  version: '0'
126
126
  - !ruby/object:Gem::Dependency
127
127
  name: redis
128
128
  requirement: !ruby/object:Gem::Requirement
129
129
  requirements:
130
- - - ">="
130
+ - - '>='
131
131
  - !ruby/object:Gem::Version
132
132
  version: '0'
133
133
  type: :development
134
134
  prerelease: false
135
135
  version_requirements: !ruby/object:Gem::Requirement
136
136
  requirements:
137
- - - ">="
137
+ - - '>='
138
138
  - !ruby/object:Gem::Version
139
139
  version: '0'
140
140
  - !ruby/object:Gem::Dependency
141
141
  name: simplecov
142
142
  requirement: !ruby/object:Gem::Requirement
143
143
  requirements:
144
- - - ">="
144
+ - - '>='
145
145
  - !ruby/object:Gem::Version
146
146
  version: '0'
147
147
  type: :development
148
148
  prerelease: false
149
149
  version_requirements: !ruby/object:Gem::Requirement
150
150
  requirements:
151
- - - ">="
151
+ - - '>='
152
152
  - !ruby/object:Gem::Version
153
153
  version: '0'
154
154
  - !ruby/object:Gem::Dependency
155
155
  name: coveralls
156
156
  requirement: !ruby/object:Gem::Requirement
157
157
  requirements:
158
- - - ">="
158
+ - - '>='
159
159
  - !ruby/object:Gem::Version
160
160
  version: '0'
161
161
  type: :development
162
162
  prerelease: false
163
163
  version_requirements: !ruby/object:Gem::Requirement
164
164
  requirements:
165
- - - ">="
165
+ - - '>='
166
166
  - !ruby/object:Gem::Version
167
167
  version: '0'
168
168
  - !ruby/object:Gem::Dependency
169
169
  name: jsonpath
170
170
  requirement: !ruby/object:Gem::Requirement
171
171
  requirements:
172
- - - "~>"
172
+ - - ~>
173
173
  - !ruby/object:Gem::Version
174
174
  version: 0.5.6
175
175
  type: :runtime
176
176
  prerelease: false
177
177
  version_requirements: !ruby/object:Gem::Requirement
178
178
  requirements:
179
- - - "~>"
179
+ - - ~>
180
180
  - !ruby/object:Gem::Version
181
181
  version: 0.5.6
182
182
  description: Redis backed lookup for your models
@@ -187,11 +187,11 @@ executables: []
187
187
  extensions: []
188
188
  extra_rdoc_files: []
189
189
  files:
190
- - ".gitignore"
191
- - ".rspec"
192
- - ".ruby-gemset"
193
- - ".ruby-version"
194
- - ".travis.yml"
190
+ - .gitignore
191
+ - .rspec
192
+ - .ruby-gemset
193
+ - .ruby-version
194
+ - .travis.yml
195
195
  - Gemfile
196
196
  - LICENSE.txt
197
197
  - README.md
@@ -230,17 +230,17 @@ require_paths:
230
230
  - lib
231
231
  required_ruby_version: !ruby/object:Gem::Requirement
232
232
  requirements:
233
- - - ">="
233
+ - - '>='
234
234
  - !ruby/object:Gem::Version
235
235
  version: '0'
236
236
  required_rubygems_version: !ruby/object:Gem::Requirement
237
237
  requirements:
238
- - - ">="
238
+ - - '>='
239
239
  - !ruby/object:Gem::Version
240
240
  version: '0'
241
241
  requirements: []
242
242
  rubyforge_project:
243
- rubygems_version: 2.2.2
243
+ rubygems_version: 2.0.5
244
244
  signing_key:
245
245
  specification_version: 4
246
246
  summary: Redis backed lookup for your models