hash_cleaner 0.0.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 +7 -0
- data/lib/hash_cleaner.rb +6 -0
- data/lib/hash_cleaner/whitelist.rb +42 -0
- metadata +59 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 0d5ff6f100ef0c8fa9ec8bf796793848a174b465
|
4
|
+
data.tar.gz: f2485bc7888187185edeada35ff4394111f089de
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 6ed4d38ac30e1002434b87945936d0b6f2f271b4bb0adbd90a65b95c7aeef7e28e7b58129e2e63e5c29ac8d509f91797cf7ff492436cef320ac63460207427f2
|
7
|
+
data.tar.gz: 467a1ee83254137d4dbbefc7795337b4ea16d35b1e6f887497b4e60985ad9cc77f7f6e011c7c03f7a3c62282a8ab3d915b4858d37c02290d7de4960fc5342632
|
data/lib/hash_cleaner.rb
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
# extracted from https://github.com/drewolson/params_cleaner
|
2
|
+
|
3
|
+
module HashCleaner
|
4
|
+
class Whitelist
|
5
|
+
def initialize(whitelist)
|
6
|
+
@whitelist = whitelist
|
7
|
+
end
|
8
|
+
|
9
|
+
def sanitize(item, parent = nil)
|
10
|
+
if item.kind_of?(Hash)
|
11
|
+
_sanitize_hash(item, parent)
|
12
|
+
elsif item.kind_of?(Array)
|
13
|
+
item.map { |item| sanitize(item, parent) }
|
14
|
+
else
|
15
|
+
item
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def _sanitize_hash(hash, parent)
|
20
|
+
valid_keys = _valid_keys_for_parent(parent)
|
21
|
+
valid_pairs = hash.select { |key, value| valid_keys.include?(key.to_sym) }
|
22
|
+
sanitized_pairs = valid_pairs.map { |key, value| [key, sanitize(value, key.to_sym)] }
|
23
|
+
|
24
|
+
HashWithIndifferentAccess.new(Hash[sanitized_pairs])
|
25
|
+
end
|
26
|
+
|
27
|
+
def _top_level_keys
|
28
|
+
@top_level_keys ||= @whitelist.reject { |item| item.kind_of?(Hash) }
|
29
|
+
end
|
30
|
+
|
31
|
+
def _valid_keys_for_parent(parent)
|
32
|
+
_whitelist_hash.keys.tap do |keys|
|
33
|
+
keys.concat(_top_level_keys) if parent.nil?
|
34
|
+
keys.concat(_whitelist_hash[parent]) if _whitelist_hash.has_key?(parent)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def _whitelist_hash
|
39
|
+
@whitelist_hash ||= @whitelist.last.is_a?(Hash) ? @whitelist.last : {}
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
metadata
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: hash_cleaner
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Marcus Vinicius Loureiro Mansur
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-09-16 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: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
description: provides whitelist feature to ruby hashes
|
28
|
+
email:
|
29
|
+
- marcus.v.mansur@gmail.com
|
30
|
+
executables: []
|
31
|
+
extensions: []
|
32
|
+
extra_rdoc_files: []
|
33
|
+
files:
|
34
|
+
- lib/hash_cleaner.rb
|
35
|
+
- lib/hash_cleaner/whitelist.rb
|
36
|
+
homepage: ''
|
37
|
+
licenses: []
|
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.1.11
|
56
|
+
signing_key:
|
57
|
+
specification_version: 4
|
58
|
+
summary: ruby hashes now can be whitelisted!
|
59
|
+
test_files: []
|