digest_hash 0.0.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 +7 -0
- data/lib/digest_hash.rb +47 -0
- metadata +59 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 7d56022b21b8cd70d13319d4f95e83ba1ee6d621
|
4
|
+
data.tar.gz: 7d4dc0fdbbc1606e1e02b67b0ddbb495f499a81f
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 4731a62e2a9aff19c4c19e387f60ca02b2cfcd98a015686f8abd530d0ffe378b3ea132e4d413e338e94a7a722fd01229324341e86c91aed14fc90567f2287bd8
|
7
|
+
data.tar.gz: 2fe49229e90a377fd1de10e68841971d3594212659a7599c755cc6b91ce8d96332364155c2853f9d1b1a6fe45869892d8bcbef3567a4b664fbf7236d5910b614
|
data/lib/digest_hash.rb
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'digest'
|
2
|
+
require 'active_support/core_ext/hash'
|
3
|
+
|
4
|
+
class DigestHash
|
5
|
+
def self.call(params)
|
6
|
+
new(params).cache_key
|
7
|
+
end
|
8
|
+
|
9
|
+
def initialize(params)
|
10
|
+
@params = params
|
11
|
+
end
|
12
|
+
|
13
|
+
def cache_key
|
14
|
+
Digest::MD5.hexdigest(cleaned_params)
|
15
|
+
end
|
16
|
+
|
17
|
+
def cleaned_params
|
18
|
+
@cleaned_params = @params
|
19
|
+
|
20
|
+
remove_nulls
|
21
|
+
deeply_sort_and_stringify_values
|
22
|
+
stringify_keys
|
23
|
+
sort_and_stringify_hash
|
24
|
+
end
|
25
|
+
|
26
|
+
def remove_nulls
|
27
|
+
@cleaned_params = @cleaned_params.to_h.delete_if { |_, v| v.nil? || v.empty? }
|
28
|
+
end
|
29
|
+
|
30
|
+
def deeply_sort_and_stringify_values
|
31
|
+
@cleaned_params = @cleaned_params.deep_merge(@cleaned_params) do |_, _, v|
|
32
|
+
if v.kind_of? Array
|
33
|
+
v.sort.to_s
|
34
|
+
else
|
35
|
+
v.to_s
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def stringify_keys
|
41
|
+
@cleaned_params = @cleaned_params.stringify_keys
|
42
|
+
end
|
43
|
+
|
44
|
+
def sort_and_stringify_hash
|
45
|
+
@cleaned_params = @cleaned_params.sort.to_s
|
46
|
+
end
|
47
|
+
end
|
metadata
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: digest_hash
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Rafi Patel
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2018-01-28 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: activesupport
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '4.2'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '4.2'
|
27
|
+
description: Uses MD5 to digest hashes, and deep sorts any arrays, as well as sorts
|
28
|
+
the keys
|
29
|
+
email: rafiepatel@gmail.com
|
30
|
+
executables: []
|
31
|
+
extensions: []
|
32
|
+
extra_rdoc_files: []
|
33
|
+
files:
|
34
|
+
- lib/digest_hash.rb
|
35
|
+
homepage: http://rubygems.org/gems/digest_hash
|
36
|
+
licenses:
|
37
|
+
- MIT
|
38
|
+
metadata: {}
|
39
|
+
post_install_message:
|
40
|
+
rdoc_options: []
|
41
|
+
require_paths:
|
42
|
+
- lib
|
43
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
49
|
+
requirements:
|
50
|
+
- - ">="
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: '0'
|
53
|
+
requirements: []
|
54
|
+
rubyforge_project:
|
55
|
+
rubygems_version: 2.5.1
|
56
|
+
signing_key:
|
57
|
+
specification_version: 4
|
58
|
+
summary: Repeatably digest hashes of options with sorted arrays
|
59
|
+
test_files: []
|