class SpamGuardian::ValueCheck

Attributes

klass[R]

Public Class Methods

new(klass) click to toggle source
# File lib/spam_guardian/value_check.rb, line 6
def initialize(klass)
  raise FormatError("'#{klass}';Should be a class.") unless klass.is_a?(Class)
  @klass = klass
end

Public Instance Methods

check(value) click to toggle source
# File lib/spam_guardian/value_check.rb, line 24
def check(value)
  return false unless value.is_a?(klass)
  case value
  when Array, Hash
    return true unless @sub_checker.is_a?(ValueCheck)
    value.all? do |(*args)|
      @sub_checker.check(args.last)
    end
  else
    true
  end
end
sub_class(klass) click to toggle source
# File lib/spam_guardian/value_check.rb, line 11
def sub_class(klass)
  raise FormatError("'#{klass}';Should be a class.") unless klass.is_a?(Class)
  dup.tap do |checker|
    checker.instance_eval do
      if @sub_checker.is_a?(ValueCheck)
        @sub_checker = @sub_checker.sub_class(klass)
      else
        @sub_checker = ValueCheck.new(klass)
      end
    end
  end
end