@@ -34,16 +34,21 @@ def decrypt(contents)
3434
3535 # @param [Hash] data
3636 # @return [Hash]
37+ # rubocop:disable Metrics/MethodLength
3738 def decrypt_hash ( data )
3839 data . each do |key , value |
39- data [ key ] = if value . is_a? ( Hash ) || value . is_a? ( Array )
40+ data [ key ] = case value
41+ when Hash
4042 decrypt_hash ( value )
43+ when Array
44+ value . map { |v | decrypt_hash ( v ) }
4145 else
4246 decrypt_string value
4347 end
4448 end
4549 data
4650 end
51+ # rubocop:enable Metrics/MethodLength
4752
4853 # @param [String] contents The raw YAML string to be encrypted
4954 # @param [String, nil] original_encrypted_contents The original (encrypted) content to determine which keys have changed
@@ -73,14 +78,18 @@ def encrypt_string(value)
7378 end
7479
7580 # TODO: Fix the complexity of this method
76- # rubocop:disable Metrics/PerceivedComplexity , Metrics/MethodLength , Metrics/CyclomaticComplexity
81+ # rubocop:disable Metrics/MethodLength , Metrics/CyclomaticComplexity , Metrics/PerceivedComplexity, Metrics/AbcSize
7782 # @param [Hash] keys
7883 # @return [Hash]
7984 def encrypt_values ( data , original_data = nil )
8085 data . each do |key , value |
81- original_encrypted_value = original_data ? original_data [ key ] : nil
82- data [ key ] = if value . is_a? ( Hash ) || value . is_a? ( Array )
86+ original_encrypted_value = original_data &.dig ( key )
87+
88+ data [ key ] = case value
89+ when Hash
8390 encrypt_values ( value , original_encrypted_value )
91+ when Array
92+ value . map . with_index { |v , i | encrypt_values ( v , original_encrypted_value &.dig ( i ) ) }
8493 else
8594 original_decrypted_value = original_encrypted_value ? decrypt_string ( original_encrypted_value ) : nil
8695 key_changed = original_decrypted_value . nil? || original_decrypted_value != value
@@ -89,7 +98,7 @@ def encrypt_values(data, original_data = nil)
8998 end
9099 data . sort . to_h
91100 end
92- # rubocop:enable Metrics/PerceivedComplexity , Metrics/MethodLength , Metrics/CyclomaticComplexity
101+ # rubocop:enable Metrics/MethodLength , Metrics/CyclomaticComplexity , Metrics/PerceivedComplexity, Metrics/AbcSize
93102
94103 # @param [String] value The encrypted value that needs decrypting
95104 # @return [String]
0 commit comments