Sha256: e2bf43aa3711368089b7024ec8bae12cb20c5b383a3e26fb263625280f6b6db9

Contents?: true

Size: 845 Bytes

Versions: 2

Compression:

Stored size: 845 Bytes

Contents

require 'set'

module EnoughFields
  class Result
    attr_accessor :field, :used

    def initialize(field, used)
      @field = field
      @used = used
    end

    def used?
      used == true
    end
  end

  class MonitSet < Set

    def check_notifications
      results = {}
      self.each do |attribute_value|
        results[ [attribute_value.call_stack, attribute_value.klass] ] ||= []
        results[ [attribute_value.call_stack, attribute_value.klass] ] << Result.new(attribute_value.field, attribute_value.used?)
      end
      results.each do |call_stack_klass, results|
        call_stack, klass = *call_stack_klass
        if results.find { |result| !result.used? }
          EnoughFields.add_notification(call_stack, klass, results.find_all { |result| result.used? }.collect(&:field))
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
enough_fields-0.0.3 lib/enough_fields/monit_set.rb
enough_fields-0.0.2 lib/enough_fields/monit_set.rb