happy_hash 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +7 -0
  2. data/lib/happy_hash.rb +41 -0
  3. data/lib/string.rb +11 -0
  4. metadata +46 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 7a703785de898829d8aa39c93529ccf381dc2a5c
4
+ data.tar.gz: ef388b2641fc073d5e0984b31a6c7eda86d023a1
5
+ SHA512:
6
+ metadata.gz: 9e13d67a22597204d80930ca557b750c55f1bf71fbfc92dce1cee6a7e7da4cbba86c63a48d08f54893a3f8560cbc37cb73f17aba9105b17f7947a72d55fd91a8
7
+ data.tar.gz: e0c278b9113dabe51681443c1defb49f5e5554cccfb5502f181948d9d09532217be6f54a06e0606179f2cc91524686f04661bdba12256c0e39d4fd99d0b5c3fc
data/lib/happy_hash.rb ADDED
@@ -0,0 +1,41 @@
1
+ require 'string'
2
+
3
+ class Hash
4
+
5
+ def happy_hash(down_case=false)
6
+ sym_keys(self, down_case)
7
+ end
8
+
9
+
10
+ def sym_keys(hash, down_case=false)
11
+ hash.inject({}) { |result, (key, value)|
12
+ new_key = case key
13
+ when String then (down_case ? key.downcase.to_sym : key.underscore.to_sym)
14
+ else key
15
+ end
16
+ new_value = case value
17
+ when Hash then sym_keys(value, down_case)
18
+ when Array then sym_array(value, down_case)
19
+ else value
20
+ end
21
+
22
+ result[new_key] = new_value
23
+
24
+ result
25
+ }
26
+ end
27
+
28
+ private
29
+ def sym_array(array, down_case=false)
30
+ array.map do |value|
31
+ case value
32
+ when Hash then sym_keys(value, down_case)
33
+ when Array then sym_array(value, down_case)
34
+ else
35
+ value
36
+ end
37
+ end
38
+ end
39
+
40
+ end
41
+
data/lib/string.rb ADDED
@@ -0,0 +1,11 @@
1
+ class String
2
+ def underscore
3
+ self.gsub(/::/, '/').
4
+ gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
5
+ gsub(/([a-z\d])([A-Z])/,'\1_\2').
6
+ tr("-", "_").
7
+ downcase
8
+ end
9
+ end
10
+
11
+
metadata ADDED
@@ -0,0 +1,46 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: happy_hash
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Ronnie Howell
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-01-29 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description:
14
+ email: rhowell@tribune.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/string.rb
20
+ - lib/happy_hash.rb
21
+ homepage: http://rubygems.org/gems/happy_hash
22
+ licenses:
23
+ - MIT
24
+ metadata: {}
25
+ post_install_message:
26
+ rdoc_options: []
27
+ require_paths:
28
+ - lib
29
+ required_ruby_version: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ required_rubygems_version: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ requirements: []
40
+ rubyforge_project:
41
+ rubygems_version: 2.1.11
42
+ signing_key:
43
+ specification_version: 4
44
+ summary: Make your hashes happy! Converts strings to symbols, even inside arrays inside
45
+ hashes. Optionally converts Uppercased strings to snake case
46
+ test_files: []