Sha256: a82484cadda248a6a5a8455e3ddbf47ec8521abe103dbaed4b05610d159fb9cf

Contents?: true

Size: 1.12 KB

Versions: 1

Compression:

Stored size: 1.12 KB

Contents

module Diagnostics
  class Check

    def self.add(name, &block)
      Diagnostics.checks << check = new(name, &block)
      check
    end

    def self.find(name)
      Diagnostics.checks.select {|c| c.name == name }[0]
    end

    attr_reader :name

    def initialize(name, &block)
      @name = name
      instance_eval(&block) if block
    end

    def passed(&block)
      @passed_block = block
    end

    def warning(&block)
      @warning_block = block
    end

    def failed(&block)
      @failed_block = block
    end

    def passed?
      @passed_block_result ||= call_block(@passed_block)
    end

    def warning?
      @warning_block_result ||= call_block(@warning_block)
    end

    def failed?
      @failed_block_result ||= call_block(@failed_block)
    end

    def status
      return :passed  if passed?
      return :warning if warning?
      return :failed  if failed?
      :none
    end

    def data
      block_given? ? yield(data_group) : data_group
    end

  private

    def data_group
      @data_group ||= DataGroup.new
    end

    def call_block(block)
      block ? block.call : false
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
diagnostics-0.0.2 lib/diagnostics/check.rb