hash_multi_tool 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.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- hash_multi_tool (0.1.0)
4
+ hash_multi_tool (0.1.1)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -27,7 +27,7 @@ Or install it yourself as:
27
27
  { foo: 'c', bar: 1 },
28
28
  { foo: 'b', bar: 4 }]
29
29
 
30
- 1) HashMultiTool.sort_by_order ARR_HASH, [:bar, :foo]
30
+ 1) HashMultiTool.sort_by_order ARR_HASH, [:bar, :foo] :-
31
31
 
32
32
  Note: By default it will sort in ASC order
33
33
 
@@ -37,13 +37,32 @@ Or install it yourself as:
37
37
 
38
38
  2) Find array of hashes of matched key values :-
39
39
 
40
- HashMultiTool.select_by_key_value ARR_HASH_ONE, :bar, 4
40
+ HashMultiTool.select_by_key_value ARR_HASH, :bar, 4
41
41
 
42
42
  => [{ foo: 'a', bar: 4 }, { foo: 'b', bar: 4 }]
43
43
 
44
- 3) Return all the available keys from a hash including subset hash
44
+ 3) Return all the available keys from a hash including subset hash :-
45
+
45
46
  hash = {"World" => "Region", "Country" => [{"Name" => "India", "Capital" => "Delhi"}, {"Name" => "England", "Capital" => "London"}]}
47
+ hash_keys = HashMultiTool.collect_keys hash
46
48
  => ["World","Country","Name","Capital","Name","Capital"]
49
+
50
+ hash_keys.uniq
51
+ => ["World","Country","Name","Capital"]
52
+
53
+ 4) Merge the keys and with collected values belongs to respective keys and return a single hash
54
+ arr = [{a:1, b:2, c:3},{a:1, b:2, c:3},{a:1, b:2, c:3},{a:1, b:2}]
55
+
56
+ hash_keys = HashMultiTool.transpose_to_hash arr
57
+
58
+ => {:a=>[1, 1, 1, 1], :b=>[2, 2, 2, 2], :c=>[3, 3, 3]}
59
+
60
+ 5) Return a collection of keys differentiated with values
61
+ hash = {:a=>[1, 1, 1, 1], :b=>[2, 2, 2, 2], :c=>[3, 3, 3]}
62
+
63
+ hash_keys = HashMultiTool.transpose_to_array hash
64
+
65
+ => [{a:1, b:2, c:3},{a:1, b:2, c:3},{a:1, b:2, c:3},{a:1, b:2}]
47
66
 
48
67
  ## Development
49
68
 
Binary file
@@ -1,3 +1,3 @@
1
1
  module HashMultiTool
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
@@ -2,7 +2,7 @@ require "hash_multi_tool/version"
2
2
 
3
3
  module HashMultiTool
4
4
  class << self
5
- def sort_by_order hash = {}, order = [], direction ='ASC'
5
+ def sort_by_order hash = [], order = [], direction ='ASC'
6
6
  hash.sort do |a,b|
7
7
  a_arr = []
8
8
  b_arr = []
@@ -11,11 +11,11 @@ module HashMultiTool
11
11
  end
12
12
  end
13
13
 
14
- def select_by_key_value hash = {}, key = [], value = nil
14
+ def select_by_key_value hash = [], key = [], value = nil
15
15
  hash.select { |h| h[key] == value }
16
16
  end
17
17
 
18
- def collect_keys(h_object)
18
+ def collect_keys h_object
19
19
  if h_object.is_a? Hash
20
20
  (h_object.keys + collect_keys(h_object.values)).flatten.uniq
21
21
  elsif h_object.is_a? Array
@@ -24,5 +24,19 @@ module HashMultiTool
24
24
  []
25
25
  end
26
26
  end
27
+
28
+ def transpose_to_hash arr = []
29
+ arr.inject({}){|a, h|
30
+ h.each_pair{|k,v| (a[k] ||= []) << v}
31
+ a
32
+ }
33
+ end
34
+
35
+ def transpose_to_array hash = {}
36
+ hash.inject([]){|a, (k,vs)|
37
+ vs.each_with_index{|v,i| (a[i] ||= {})[k] = v}
38
+ a
39
+ }
40
+ end
27
41
  end
28
42
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hash_multi_tool
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2015-04-23 00:00:00.000000000 Z
12
+ date: 2015-06-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -75,6 +75,7 @@ files:
75
75
  - bin/console
76
76
  - bin/setup
77
77
  - hash_multi_tool-0.1.0.gem
78
+ - hash_multi_tool-0.1.1.gem
78
79
  - hash_multi_tool.gemspec
79
80
  - lib/hash_multi_tool.rb
80
81
  - lib/hash_multi_tool/version.rb