lib/rdstation/error/format.rb in rdstation-ruby-client-2.2.0 vs lib/rdstation/error/format.rb in rdstation-ruby-client-2.3.0
- old
+ new
@@ -1,30 +1,48 @@
+# frozen_string_literal: true
+
module RDStation
class Error
class Format
- FLAT_HASH = 'FLAT_HASH'.freeze
- HASH_OF_ARRAYS = 'HASH_OF_ARRAYS'.freeze
- ARRAY_OF_HASHES = 'ARRAY_OF_HASHES'.freeze
+ FLAT_HASH = 'FLAT_HASH'
+ HASH_OF_ARRAYS = 'HASH_OF_ARRAYS'
+ ARRAY_OF_HASHES = 'ARRAY_OF_HASHES'
+ HASH_OF_MULTIPLE_TYPES = 'HASH_OF_MULTIPLE_TYPES'
+ HASH_OF_HASHES = 'HASH_OF_HASHES'
def initialize(errors)
@errors = errors
end
def format
return FLAT_HASH if flat_hash?
return HASH_OF_ARRAYS if hash_of_arrays?
+ return HASH_OF_HASHES if hash_of_hashes?
+ return HASH_OF_MULTIPLE_TYPES if hash_of_multiple_types?
+
ARRAY_OF_HASHES
end
private
def flat_hash?
return unless @errors.is_a?(Hash)
+
@errors.key?('error_type')
end
def hash_of_arrays?
@errors.is_a?(Hash) && @errors.values.all? { |error| error.is_a? Array }
+ end
+
+ def hash_of_hashes?
+ @errors.is_a?(Hash) && @errors.values.all? { |error| error.is_a? Hash }
+ end
+
+ def hash_of_multiple_types?
+ @errors.is_a?(Hash) &&
+ @errors.values.any? { |error| error.is_a? Hash } &&
+ @errors.values.any? { |error| error.is_a? Array }
end
end
end
end