dig-deep 0.1.1 → 0.1.2

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: 5d986ce65a4893201bc02af4904e014edda27e47
4
- data.tar.gz: ea16a1aec272f008c849c9ddb191c99c08c40019
3
+ metadata.gz: 481c5bc6823b0f7f2aa98840ec47f08facde83a2
4
+ data.tar.gz: b39e5d868944e21414508816a8148f3da1466936
5
5
  SHA512:
6
- metadata.gz: dfec539c554e82ca5da1d16494d54392186bbc07b49b3674a68272f2fae07e0ba46e545218a2efc280bb8552afdd368811b931b7c3536043ca55b4c014a5ab7f
7
- data.tar.gz: 5a4f4e372823f2cdbaa4102e128ef4695807cace9ffd0b71fbf2b2a0f2eb253838b5b48e1bc92fdb19929c827b889dd2e4c1d054a5a84407fee7e823f65ee772
6
+ metadata.gz: 8622a60eecdc5b0cb1b30a2a886e6dd010095182df2bbd9dc54b514c2eb5369b3fdc929f75e5c42f8a7c9620496a98b332c5eedc182d4aec041da54176deeda9
7
+ data.tar.gz: 8e985748e384803a184ccaf10b317425fcd2ec272d3dbe6fa3d638667d280f76caab71cb92eeed01700bc68b858e57f1a88b8c6a1b3c139fd3b53d1f167aa3f4
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- dig-deep (0.1.0)
4
+ dig-deep (0.1.2)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/lib/dig-deep.rb CHANGED
@@ -3,11 +3,9 @@ require "json"
3
3
 
4
4
  module DigDeep
5
5
  def dig_deep(target)
6
- results = dig_for(self, target)
6
+ results = serialize_for(self, target)
7
7
 
8
- return nil if results.empty?
9
- return results[0] if results.length === 1
10
- return results
8
+ results.size <= 1 ? results[0] : results
11
9
  end
12
10
  end
13
11
 
@@ -15,10 +13,9 @@ class Hash
15
13
  include DigDeep
16
14
  end
17
15
 
18
-
19
16
  private
20
17
 
21
- def dig_for(obj, target)
18
+ def serialize_for(obj, target)
22
19
  drill(obj, target).map do |m|
23
20
  string_to_array(m) ? string_to_array(m) : m
24
21
  end.compact
@@ -26,26 +23,24 @@ end
26
23
 
27
24
  def drill(obj, target)
28
25
  if is_object?(obj)
29
- if (obj.is_a?(Hash) && obj.key?(target))
30
- acc = obj[target].is_a?(Array) ? ["#{obj[target]}"] : [ obj[target] ]
31
- end
32
-
33
- obj.reduce(acc ||= []) do |acc, val|
34
- if (val.is_a?(Hash) && val.key?(target))
35
- acc << (val[target].is_a?(Array) ? "#{val[target]}" : val[target])
36
- elsif val.is_a?(Array)
37
- acc << val.reduce([]){|acc, v| drill(v, target) if is_object?(v) }
38
- elsif val.is_a?(Hash)
39
- acc << val.values.reduce([]){|acc,v| drill(v,target)}
40
- else
41
- acc
42
- end
43
- end.compact.flatten(1)
26
+ acc = (obj.is_a?(Hash) && obj.key?(target)) \
27
+ ? obj[target].is_a?(Array) ? ["#{obj[target]}"] : [ obj[target] ] \
28
+ : []
29
+
30
+ obj.reduce(acc) do |acc, val|
31
+ val.is_a?(Hash) \
32
+ ? ( val.key?(target) \
33
+ ? acc << (val[target].is_a?(Array) ? "#{val[target]}" : val[target]) \
34
+ : acc << val.values.reduce([]){|acc,v| drill(v,target)} )
35
+ : ( val.is_a?(Array) \
36
+ ? acc << val.reduce([]){|acc, v| drill(v, target) if is_object?(v) } \
37
+ : acc )
38
+ end.flatten(1)
44
39
  end
45
40
  end
46
41
 
47
42
  def is_object?(obj)
48
- (obj.class == Hash || obj.class == Array) ? true : false
43
+ obj.class == Hash || obj.class == Array
49
44
  end
50
45
 
51
46
  def string_to_array(val)
@@ -1,3 +1,3 @@
1
1
  module DigDeep
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dig-deep
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Henry Szeto