Sha256: 564c111b3fa0f9870950d3ea9475a70c0ed647d657f9d06fbef0ef1c66a5dafc

Contents?: true

Size: 857 Bytes

Versions: 47

Compression:

Stored size: 857 Bytes

Contents

module Xeroizer
  module Record
    
    class Validator
      
      attr_reader :attribute
      attr_reader :options
      
      def initialize(attribute, options = {})
        @attribute = attribute
        @options = options
      end
  
      def validate(record)
        valid?(record) if run_validator?(record, options)
      end

      def run_validator?(record, options)
        return false if options[:if] && !condition?(record, options[:if])
        return false if options[:unless] && condition?(record, options[:unless])
        true
      end

      def condition?(record, condition)
        return condition.call(record) if condition.respond_to? :call
        return record.send(condition) if condition.is_a? Symbol
        raise "Validation condition must be a Symbol or an Object that responds to call"
      end

    end
    
  end
end

Version data entries

47 entries across 47 versions & 3 rubygems

Version Path
xeroizer-3.0.1 lib/xeroizer/record/validators/validator.rb
xeroizer-3.0.0 lib/xeroizer/record/validators/validator.rb
xeroizer-3-pre-beta-3.0.0.pre.beta lib/xeroizer/record/validators/validator.rb
xeroizer-2.20.0 lib/xeroizer/record/validators/validator.rb
xeroizer-2.19.0 lib/xeroizer/record/validators/validator.rb
xeroizer-2.18.1 lib/xeroizer/record/validators/validator.rb
xeroizer-2.17.1 lib/xeroizer/record/validators/validator.rb
xeroizer-2.16.5 lib/xeroizer/record/validators/validator.rb
xeroizer-2.16.4 lib/xeroizer/record/validators/validator.rb
xeroizer-2.16.3 lib/xeroizer/record/validators/validator.rb
xeroizer-2.16.1 lib/xeroizer/record/validators/validator.rb
xeroizer-2.16.0 lib/xeroizer/record/validators/validator.rb
xeroizer-2.15.9 lib/xeroizer/record/validators/validator.rb
xeroizer-2.15.8 lib/xeroizer/record/validators/validator.rb
xeroizer-2.15.7 lib/xeroizer/record/validators/validator.rb
xeroizer-2.15.6 lib/xeroizer/record/validators/validator.rb
xeroizer-float-2.15.5.2 lib/xeroizer/record/validators/validator.rb
xeroizer-float-2.15.5.1 lib/xeroizer/record/validators/validator.rb
xeroizer-2.15.5 lib/xeroizer/record/validators/validator.rb
xeroizer-float-2.15.3.16 lib/xeroizer/record/validators/validator.rb