Sha256: fb2dc3069427d2ecbe38f5f7d74d1a24cd4c0dd00b8a27b87160079c66f5f37d
Contents?: true
Size: 1.57 KB
Versions: 1
Compression:
Stored size: 1.57 KB
Contents
module Pupa class Refinements # A refinement for JSON Schema to validate "email" and "uri" formats. module Format # @see http://my.rails-royce.org/2010/07/21/email-validation-in-ruby-on-rails-without-regexp/ def validate(current_schema, data, fragments, processor, validator, options = {}) case current_schema.schema['format'] when 'email' error_message = "The property '#{build_fragment(fragments)}' must be a valid email address" validation_error(processor, error_message, fragments, current_schema, self, options[:record_errors]) and return if !data.is_a?(String) address = Mail::Address.new(data) unless (address.address == data && address.domain && address.__send__(:tree).domain.dot_atom_text.elements.size > 1 rescue false) validation_error(processor, error_message, fragments, current_schema, self, options[:record_errors]) return end when 'uri' error_message = "The property '#{build_fragment(fragments)}' must be a valid URI" validation_error(processor, error_message, fragments, current_schema, self, options[:record_errors]) and return if !data.is_a?(String) r = URI::DEFAULT_PARSER.regexp[:ABS_URI] unless r.match(data) validation_error(processor, error_message, fragments, current_schema, self, options[:record_errors]) return end else super end end end end end class JSON::Schema::FormatAttribute class << self prepend Pupa::Refinements::Format end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
pupa-0.0.2 | lib/pupa/refinements/json-schema.rb |