class RubyMotionQuery::Validation

Constants

DATEISO
DIGITS
EMAIL

Validation Regex from jQuery validation -> github.com/jzaefferer/jquery-validation/blob/master/src/core.js#L1094-L1200

HASLOWER

Has at least 1 lowercase letter

HASUPPER

Has at least 1 uppercase letter

INTLPHONE

International Phone numbers

IPV4

Other Fun by www.freeformatter.com/regex-tester.html

NOT_PRESENCE

is just whitespace

NUMBER
STRONGPW

Strong password (at least [8 chars, 1 upper, 1 lower, 1 number])

TIME
UKZIP

UK Postal Code regex from: stackoverflow.com/a/7259020/814123

URL
USPHONE

7 or 10 digit number, delimiters are spaces, dashes, or periods

USZIP

Future Password strength validations -> stackoverflow.com/questions/5142103/regex-for-password-strength

Attributes

rule_name[R]
valid_status[R]

Public Class Methods

add_validator(rule, &block) click to toggle source
# File lib/project/ruby_motion_query/rmq_validation.rb, line 211
def add_validator(rule, &block)
  raise(ArgumentError, "add_validator requires a block") if block.nil?

  @@validation_methods[rule] = block
end
new(rule, options={}) click to toggle source
# File lib/project/ruby_motion_query/rmq_validation.rb, line 165
def initialize(rule, options={})
  @rule = @@validation_methods[rule]
  raise "RMQ validation error: :#{rule} is not one of the supported validation methods." unless @rule
  @rule_name = rule
  @options = options
  @valid_status = true
end
valid?(value, rule, options={}) click to toggle source

Add tags @example

rmq.validation.valid?('test@test.com', :email)
rmq.validation.valid?(53.8, :number)
rmq.validation.valid?(54, :digits)
rmq.validation.valid?('https://www.tacoland.com', :url)
rmq.validation.valid?('2014-03-02', :dateiso)
rmq.validation.valid?('', :email, allow_blank: true)

@return [Boolean]

# File lib/project/ruby_motion_query/rmq_validation.rb, line 207
def valid?(value, rule, options={})
  Validation.new(rule).valid?(value, options)
end

Public Instance Methods

universal_validation_checks(data, options={}) click to toggle source

this method shortcuts specific validation rules. As such it should only be added to for universal validation needs. It must be kept as efficient as possible.

# File lib/project/ruby_motion_query/rmq_validation.rb, line 184
def universal_validation_checks (data, options={})
  # shortcircuit if debugging
  return true if RubyMotionQuery::RMQ.debugging?
  # allow blank data if specified
  return true if (options[:allow_blank] && (data.nil? || data.empty?))
  # allow whitelist data if specified
  return true if (options[:white_list] && options[:white_list].include?(data))

  false
end
valid?(data, options={}) click to toggle source
# File lib/project/ruby_motion_query/rmq_validation.rb, line 173
def valid?(data, options={})
  @options = options.merge(@options)

  # shortcircuit for universal validation parameters
  return true if universal_validation_checks(data, @options)

  @valid_status = @rule.call(data, @options)
end