string-cases 0.0.3 → 0.0.4

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: 234fd7fe816c06ba2ce0b288e94767cff3ec7707
4
- data.tar.gz: 9012818a9554c353acacfb82e4e6946a0e173e4d
3
+ metadata.gz: 000023f3208493ee8e5b7946040ffa6ecc4282cf
4
+ data.tar.gz: b58642e71de68780ac514567e48f3c5f8d376a69
5
5
  SHA512:
6
- metadata.gz: a52cdf579e540c2cc76ab93c749c125f24b84f228dc0a634a440ba6fcbf561723927b920de628911ece6bfbff04904846adb140fec590b1163cbc46515f624a2
7
- data.tar.gz: 4adca1c912320e2d2725365c4e7efea9b39a0279b5304ae5e4d6f6c2bed5ecb841cc92684aab3c99fb4260508f0624bd5873820075f0d1c6b924eb1ecb6a5c68
6
+ metadata.gz: 4bef5509e708606265e5c91ca369fc7a7329b3291e96480899ac6c082a5aad62d46a9e09113204c946ab05be2131a9edc66e7116d30056c90882c7e5d879ae37
7
+ data.tar.gz: 80cab67dcf2e73aae4a4af81f1e74afe1f7ddcda8eb8de95bd35c924fa6b056db9265a54f8bb3049c9f34601c3a1929bae2777b739fb52154a2b226d1a3c83ed
@@ -20,6 +20,9 @@ Metrics/AbcSize:
20
20
  Metrics/ClassLength:
21
21
  Max: 250
22
22
 
23
+ Metrics/CyclomaticComplexity:
24
+ Max: 25
25
+
23
26
  Style/AccessModifierIndentation:
24
27
  EnforcedStyle: outdent
25
28
 
data/README.md CHANGED
@@ -42,6 +42,22 @@ StringCases.singularize("users") #=> "user"
42
42
  StringCases.singularize("categories") #=> "category"
43
43
  ```
44
44
 
45
+ ### Constantize
46
+
47
+ ```ruby
48
+ StringCases.constantize("SomeNamespace::SomeClass") => SomeNamespace::SomeClass
49
+ ```
50
+
51
+ ### Symbolize keys
52
+
53
+ ```ruby
54
+ StringCases.symbolize_keys({"test1" => "test1val", "test2" => {"test2key" => "test2val"}}, recursive: true) #=> {:test1 => "test1val, :test2 => {:test2key => "test2val"}}
55
+ ```
56
+
57
+ ```ruby
58
+ StringCases.stringify_keys({test1: "test1val", test2: {test2key: "test2val"}}, recursive: true) #=> {"test1" => "test1val, "test2" => {"test2key" => "test2val"}}
59
+ ```
60
+
45
61
  ## Contributing to string-cases
46
62
 
47
63
  * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.3
1
+ 0.0.4
@@ -36,4 +36,31 @@ class StringCases
36
36
  mod_path.const_get(mod_to_find)
37
37
  end
38
38
  end
39
+
40
+ def self.hash_keys(hash, mode, args = {})
41
+ new_hash = {}
42
+ hash.each do |key, value|
43
+ case mode
44
+ when :stringify
45
+ key = key.to_s if key.is_a?(Symbol)
46
+ when :symbolize
47
+ key = key.to_sym if key.is_a?(String)
48
+ else
49
+ raise "Unknown mode: #{mode}"
50
+ end
51
+
52
+ value = StringCases.hash_keys(value, mode, args) if args[:recursive] && value.is_a?(Hash)
53
+ new_hash[key] = value
54
+ end
55
+
56
+ new_hash
57
+ end
58
+
59
+ def self.symbolize_keys(hash, args = {})
60
+ StringCases.hash_keys(hash, :symbolize, args)
61
+ end
62
+
63
+ def self.stringify_keys(hash, args = {})
64
+ StringCases.hash_keys(hash, :stringify, args)
65
+ end
39
66
  end
@@ -41,4 +41,26 @@ describe "StringCases" do
41
41
  expect(StringCases.constantize("WeakRef::RefError")).to eq WeakRef::RefError
42
42
  end
43
43
  end
44
+
45
+ describe "#hash_keys" do
46
+ it "symbolizes keys" do
47
+ result = StringCases.symbolize_keys("test1" => "test1val", "test2" => {"test3" => "test3val"})
48
+ expect(result).to eq(test1: "test1val", test2: {"test3" => "test3val"})
49
+ end
50
+
51
+ it "stringify keys" do
52
+ result = StringCases.stringify_keys(test1: "test1val", test2: {test3: "test3val"})
53
+ expect(result).to eq("test1" => "test1val", "test2" => {test3: "test3val"})
54
+ end
55
+
56
+ it "symbolizes keys recursively" do
57
+ result = StringCases.symbolize_keys({"test1" => "test1val", "test2" => {"test3" => "test3val"}}, recursive: true)
58
+ expect(result).to eq(test1: "test1val", test2: {test3: "test3val"})
59
+ end
60
+
61
+ it "stringify keys recursively" do
62
+ result = StringCases.stringify_keys({test1: "test1val", test2: {test3: "test3val"}}, recursive: true)
63
+ expect(result).to eq("test1" => "test1val", "test2" => {"test3" => "test3val"})
64
+ end
65
+ end
44
66
  end
@@ -2,16 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: string-cases 0.0.3 ruby lib
5
+ # stub: string-cases 0.0.4 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "string-cases"
9
- s.version = "0.0.3"
9
+ s.version = "0.0.4"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib"]
13
13
  s.authors = ["kaspernj"]
14
- s.date = "2016-01-07"
14
+ s.date = "2016-01-10"
15
15
  s.description = "Small gem for converting various string-cases to other cases."
16
16
  s.email = "k@spernj.org"
17
17
  s.extra_rdoc_files = [
@@ -36,7 +36,7 @@ Gem::Specification.new do |s|
36
36
  ]
37
37
  s.homepage = "http://github.com/kaspernj/string-cases"
38
38
  s.licenses = ["MIT"]
39
- s.rubygems_version = "2.4.0"
39
+ s.rubygems_version = "2.2.2"
40
40
  s.summary = "Small gem for converting various string-cases to other cases."
41
41
 
42
42
  if s.respond_to? :specification_version then
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: string-cases
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - kaspernj
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-07 00:00:00.000000000 Z
11
+ date: 2016-01-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -122,7 +122,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
122
122
  version: '0'
123
123
  requirements: []
124
124
  rubyforge_project:
125
- rubygems_version: 2.4.0
125
+ rubygems_version: 2.2.2
126
126
  signing_key:
127
127
  specification_version: 4
128
128
  summary: Small gem for converting various string-cases to other cases.