class JSchema::Validator::Format

Private Instance Methods

applicable_type() click to toggle source
# File lib/jschema/validator/format.rb, line 33
def applicable_type
  String
end
date_time(instance) click to toggle source
# File lib/jschema/validator/format.rb, line 37
def date_time(instance)
  true if DateTime.rfc3339(instance)
rescue ArgumentError
  false
end
email(instance) click to toggle source
# File lib/jschema/validator/format.rb, line 43
def email(instance)
  instance.include? '@'
end
hostname(instance) click to toggle source

Acc.to RFC 1034, 3.1

# File lib/jschema/validator/format.rb, line 48
def hostname(instance)
  if instance.length.between?(1, 255)
    instance.split('.').all? do |label|
      label =~ /^[\da-z\-]{1,63}$/i
    end
  else
    false
  end
end
ipv4(instance) click to toggle source
# File lib/jschema/validator/format.rb, line 58
def ipv4(instance)
  IPAddr.new(instance).ipv4?
rescue ArgumentError
  false
end
ipv6(instance) click to toggle source
# File lib/jschema/validator/format.rb, line 64
def ipv6(instance)
  IPAddr.new(instance).ipv6?
rescue ArgumentError
  false
end
post_initialize(format) click to toggle source
# File lib/jschema/validator/format.rb, line 23
def post_initialize(format)
  @validator_method = format.gsub('-', '_')
end
regex(instance) click to toggle source
# File lib/jschema/validator/format.rb, line 78
def regex(instance)
  Regexp.new(instance)
  true
rescue TypeError, RegexpError
  false
end
uri(instance) click to toggle source
# File lib/jschema/validator/format.rb, line 70
def uri(instance)
  # NOTE: Since URI.escape is obsolete I had to use
  # WEBrick::HTTPUtils.escape
  URI.parse WEBrick::HTTPUtils.escape(instance)
rescue URI::InvalidURIError
  false
end
validate_args(format) click to toggle source
# File lib/jschema/validator/format.rb, line 12
def validate_args(format)
  allowed_formats =
    ['date-time', 'email', 'hostname', 'ipv4', 'ipv6', 'uri', 'regex']

  if allowed_formats.include?(format)
    true
  else
    invalid_schema 'format', format
  end
end
validate_instance(instance) click to toggle source
# File lib/jschema/validator/format.rb, line 27
def validate_instance(instance)
  unless send(@validator_method, instance)
    "#{instance} must be a #{@validator_method}"
  end
end