File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -33,13 +33,18 @@ def self.deep_to_hash(object)
3333 end
3434 end
3535
36- def self . deep_camelize ( hash )
37- return hash unless hash . is_a? ( Hash )
38-
39- hash . each_with_object ( { } ) do |( k , v ) , new_hash |
40- camel_key = camelize ( k ) . to_sym
41- new_value = v . is_a? ( Hash ) ? deep_camelize ( v ) : v
42- new_hash [ camel_key ] = new_value
36+ def self . deep_camelize ( object )
37+ case object
38+ when Array
39+ object . map { |item | deep_camelize ( item ) }
40+ when Hash
41+ object . each_with_object ( { } ) do |( k , v ) , new_object |
42+ camel_key = camelize ( k ) . to_sym
43+ new_value = v . is_a? ( Array ) || v . is_a? ( Hash ) ? deep_camelize ( v ) : v
44+ new_object [ camel_key ] = new_value
45+ end
46+ else
47+ object
4348 end
4449 end
4550
Original file line number Diff line number Diff line change @@ -104,6 +104,12 @@ def initialize(name)
104104 expect ( Line ::Bot ::V2 ::Utils . deep_camelize ( input ) ) . to eq ( expected_output )
105105 end
106106
107+ it 'converts hashes in array with snake_case keys' do
108+ input = [ { outer_key : { inner_key : 'value' , inner_array : [ { core_key : 'value' } ] } } ]
109+ expected_output = [ { outerKey : { innerKey : 'value' , innerArray : [ { coreKey : 'value' } ] } } ]
110+ expect ( Line ::Bot ::V2 ::Utils . deep_camelize ( input ) ) . to eq ( expected_output )
111+ end
112+
107113 it 'handles empty hashes' do
108114 input = { }
109115 expected_output = { }
You can’t perform that action at this time.
0 commit comments