lib/json-schema/attributes/enum.rb in json-schema-2.4.1 vs lib/json-schema/attributes/enum.rb in json-schema-2.5.0

- old
+ new

@@ -2,25 +2,23 @@ module JSON class Schema class EnumAttribute < Attribute def self.validate(current_schema, data, fragments, processor, validator, options = {}) - if !current_schema.schema['enum'].include?(data) - message = "The property '#{build_fragment(fragments)}' value #{data.inspect} did not match one of the following values:" - current_schema.schema['enum'].each {|val| - if val.is_a?(NilClass) - message += " null," - elsif val.is_a?(Array) - message += " (array)," - elsif val.is_a?(Hash) - message += " (object)," - else - message += " #{val.to_s}," - end - } - message.chop! - validation_error(processor, message, fragments, current_schema, self, options[:record_errors]) - end + enum = current_schema.schema['enum'] + return if enum.include?(data) + + values = enum.map { |val| + case val + when nil then 'null' + when Array then 'array' + when Hash then 'object' + else val.to_s + end + }.join(', ') + + message = "The property '#{build_fragment(fragments)}' value #{data.inspect} did not match one of the following values: #{values}" + validation_error(processor, message, fragments, current_schema, self, options[:record_errors]) end end end end