Last active
October 6, 2021 12:48
-
-
Save mkuhnt/6815250 to your computer and use it in GitHub Desktop.
Revisions
-
mkuhnt renamed this gist
Oct 4, 2013 . 1 changed file with 2 additions and 2 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -9,8 +9,8 @@ def transform_hash(original, options={}, &block) value end end block.call(result,key,value) result } end -
mkuhnt created this gist
Oct 3, 2013 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,35 @@ def transform_hash(original, options={}, &block) original.inject({}){|result, (key,value)| value = if (options[:deep] && Hash === value) transform_hash(value, options, &block) else if Array === value value.map{|v| transform_hash(v, options, &block)} else value end end block.call(result,key,value) result } end # Convert keys to strings def stringify_keys(hash) transform_hash(hash) {|hash, key, value| hash[key.to_s] = value } end # Convert keys to strings, recursively def deep_stringify_keys(hash) transform_hash(hash, :deep => true) {|hash, key, value| hash[key.to_s] = value } end h1 = {a: {b: "c", d: [{a: "test", b: "test 2"},{a: "test 3"}]}} puts h1 puts stringify_keys(h1) puts deep_stringify_keys(h1)