dig-deep 0.1.1 → 0.1.2

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 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