Sha256: bffd062657db030bb1d8d1cebef322d34d5d4938e921e31590aff00f206b9b41

Contents?: true

Size: 680 Bytes

Versions: 5

Compression:

Stored size: 680 Bytes

Contents

# assumes that @checks is defined as an array of no-arg lambdas, each
# lambda raising an error (with useful msg) when check fails
module Validatable
  attr_reader :errors
  
  def check_methods; []; end
  def validatables; []; end
  
  def validate
    @errors = []
    
    
    check_methods.each do |check_method|
      begin
        send(check_method)
      rescue StandardError => e
        @errors.push e
      end
    end
    
    validatables.each do |v|
      if v.respond_to?(:validate)
        @errors += v.validate
      end
    end
    
    return @errors
  end
  
  def valid?
    self.validate
    @errors.empty?
  end
  
  def invalid?
    !self.valid?
  end
end

Version data entries

5 entries across 5 versions & 2 rubygems

Version Path
musicality-0.2.0 lib/musicality/validatable.rb
musicality-0.1.0 lib/musicality/validatable.rb
music-transcription-0.21.0 lib/music-transcription/validatable.rb
music-transcription-0.20.0 lib/music-transcription/validatable.rb
music-transcription-0.19.0 lib/music-transcription/validatable.rb