deep_sort 0.1.0 → 0.1.1

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: 26160361331231287e80b544f188a67a91875d2f
4
- data.tar.gz: b25fc265071a4058a68dd35b0d78f9d690dc5ecf
3
+ metadata.gz: d902dc8fc0a4ecbb6e53e31306256e8b582c8c62
4
+ data.tar.gz: 27e1a75e36c82b6a15bae09fb1bbeb6d6e52ecda
5
5
  SHA512:
6
- metadata.gz: 76adbb6f13c84127763a61317e710ecf3e955de8aac18f2c49b7eba12937d563e0920f14084886f044c6a88d5d44ae7852613b4e1023ca237cba4b6239456bed
7
- data.tar.gz: 9ba9905f5e213a87de772453925f69fc83f7e9af94546f7c0966c759c0ffbb4b27bd65f995d4c3959f560a4bbf81e71b4edc050da3e1648172c38bc23ee11940
6
+ metadata.gz: ce2fa3b09a814bd5a834cfd3ba1455c342945b9832f8f0a87021f048d69cb6cfc04cbba8afec1cc080c290bf4c91ea80cca552ba0c8fe9fbabce80aae01bc68d
7
+ data.tar.gz: 5e87d45d71dc79fd48b781b5d235204350fbc3017a7c3a5581d7bfdcd63d4b24320dc4f94333b8dfae06b95986b11a1c364bcb8e56d41ce2ac1526ad94d08e4f
data/README.md CHANGED
@@ -21,12 +21,14 @@ Or install it yourself as:
21
21
 
22
22
  $ gem install deep_sort
23
23
 
24
- ## Additional methods
24
+ ## Methods
25
25
 
26
- * `Array#deep_sort`
27
- * `Array#deep_sort!`
28
- * `Hash#deep_sort`
29
- * `Hash#deep_sort!`
26
+ * `DeepSort.deep_sort(obj, options = {})`
27
+ * `require 'deep_sort/extend'`
28
+ * `Array#deep_sort(options = {})`
29
+ * `Array#deep_sort!(options = {})`
30
+ * `Hash#deep_sort(options = {})`
31
+ * `Hash#deep_sort!(options = {})`
30
32
 
31
33
  ## Usage
32
34
 
@@ -50,8 +52,7 @@ hash = {"firstName"=>"John",
50
52
  "number"=>[5, 4, 9, 7],
51
53
  "tags"=>Set["staff", "engineer", {"joined_at"=>"2016", "emp_no"=>10}, "writer"]}
52
54
 
53
-
54
- pp hash.deep_sort
55
+ pp DeepSort.deep_sort(hash)
55
56
  #=> {"address"=>
56
57
  # {"city"=>"New York",
57
58
  # "postalCode"=>"10021",
@@ -71,7 +72,7 @@ pp hash.deep_sort
71
72
  ### `sort_enum: true`
72
73
 
73
74
  ```ruby
74
- pp hash.deep_sort(sort_enum: true)
75
+ pp DeepSort.deep_sort(sort_enum: true)
75
76
  #=> {"address"=>
76
77
  # {"city"=>"New York",
77
78
  # "postalCode"=>"10021",
data/lib/deep_sort.rb CHANGED
@@ -1,3 +1,23 @@
1
1
  require 'deep_sort/version'
2
- require 'deep_sort/array_ext'
3
- require 'deep_sort/hash_ext'
2
+ require 'deep_sort/array'
3
+ require 'deep_sort/hash'
4
+
5
+ module DeepSort
6
+ def deep_sort(obj, options = {})
7
+ case obj
8
+ when Array
9
+ DeepSort::Array.deep_sort(obj, options)
10
+ when Hash
11
+ DeepSort::Hash.deep_sort(obj, options)
12
+ when Enumerable
13
+ if options[:sort_enum]
14
+ DeepSort::Array.deep_sort(obj.to_a, options)
15
+ else
16
+ obj
17
+ end
18
+ else
19
+ obj
20
+ end
21
+ end
22
+ module_function :deep_sort
23
+ end
@@ -1,11 +1,15 @@
1
- module DeepSort::ArrayExt
1
+ module DeepSort::Array
2
2
  def deep_sort!(options = {})
3
3
  new_array = self.deep_sort(options)
4
4
  self.replace(new_array)
5
5
  end
6
6
 
7
- def deep_sort(options = {})
8
- self.map {|value|
7
+ def deep_sort(options)
8
+ DeepSort::Array.deep_sort(self, options)
9
+ end
10
+
11
+ def self.deep_sort(array, options = {})
12
+ array.map {|value|
9
13
  case value
10
14
  when Array, Hash
11
15
  value.deep_sort(options)
@@ -21,7 +25,3 @@ module DeepSort::ArrayExt
21
25
  }.sort_by(&:to_s)
22
26
  end
23
27
  end
24
-
25
- class Array
26
- prepend DeepSort::ArrayExt
27
- end
@@ -0,0 +1,7 @@
1
+ class Array
2
+ prepend DeepSort::Array
3
+ end
4
+
5
+ class Hash
6
+ prepend DeepSort::Hash
7
+ end
@@ -1,14 +1,18 @@
1
- module DeepSort::HashExt
1
+ module DeepSort::Hash
2
2
  def deep_sort!(options = {})
3
3
  new_hash = self.deep_sort(options)
4
4
  self.replace(new_hash)
5
5
  end
6
6
 
7
7
  def deep_sort(options = {})
8
+ DeepSort::Hash.deep_sort(self, options)
9
+ end
10
+
11
+ def self.deep_sort(hash, options = {})
8
12
  new_hash = {}
9
13
 
10
- self.keys.sort_by(&:to_s).each do |key|
11
- value = self[key]
14
+ hash.keys.sort_by(&:to_s).each do |key|
15
+ value = hash[key]
12
16
 
13
17
  case value
14
18
  when Array, Hash
@@ -25,7 +29,3 @@ module DeepSort::HashExt
25
29
  new_hash
26
30
  end
27
31
  end
28
-
29
- class Hash
30
- prepend DeepSort::HashExt
31
- end
@@ -1,3 +1,3 @@
1
1
  module DeepSort
2
- VERSION = '0.1.0'
2
+ VERSION = '0.1.1'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: deep_sort
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - winebarrel
@@ -84,8 +84,9 @@ files:
84
84
  - bin/setup
85
85
  - deep_sort.gemspec
86
86
  - lib/deep_sort.rb
87
- - lib/deep_sort/array_ext.rb
88
- - lib/deep_sort/hash_ext.rb
87
+ - lib/deep_sort/array.rb
88
+ - lib/deep_sort/extend.rb
89
+ - lib/deep_sort/hash.rb
89
90
  - lib/deep_sort/version.rb
90
91
  homepage: https://github.com/winebarrel/deep_sort
91
92
  licenses: