Sha256: 4ff8e9339e5b1931b5b611a3e5e06c20a82e2c92038102c2782a6e3ea1166a32

Contents?: true

Size: 605 Bytes

Versions: 6

Compression:

Stored size: 605 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 validate
    @errors = []
    
    @check_methods.each do |check_method|
      begin
        send(check_method)
      rescue StandardError => e
        @errors.push e
      end
    end
    
    validatables.each do |v|
      @errors += v.validate
    end
    
    return @errors
  end
  
  def validatables
    []
  end
  
  def valid?
    self.validate
    @errors.empty?
  end
  
  def invalid?
    !self.valid?
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
music-transcription-0.9.2 lib/music-transcription/validatable.rb
music-transcription-0.9.1 lib/music-transcription/validatable.rb
music-transcription-0.9.0 lib/music-transcription/validatable.rb
music-transcription-0.8.1 lib/music-transcription/validatable.rb
music-transcription-0.8.0 lib/music-transcription/validatable.rb
music-transcription-0.7.3 lib/music-transcription/validatable.rb