Sha256: 8257614fabb6426dc3e36f39ca478be74b88406d814a743ee939d8242379958a

Contents?: true

Size: 1.42 KB

Versions: 8

Compression:

Stored size: 1.42 KB

Contents

# frozen_string_literal: true

module Rapporteur
  # Manages a list of checks.
  #
  # The goals of this object are to store and return the check objects given to
  # it in the same order they were given (in Ruby 1.8 and newer). And, to
  # ensure that the same check is not added twice to be run.
  #
  # Previously, a native Ruby Set was used. However, Sets do not guarantee
  # order, particularly in Ruby 1.8. A simple Array is possible, but loses the
  # uniqueness constraint of the objects added.
  #
  class CheckList
    # Public: Returns a new, empty CheckList instance.
    #
    def initialize
      @list = []
    end

    # Public: Add a new check to the list.
    #
    # Returns the CheckList instance.
    #
    def add(check)
      @list << check unless @list.include?(check)
      self
    end

    # Public: Empties all checks from the list. This functionally resets the
    # list to an initial state.
    #
    # Returns the CheckList instance.
    #
    def clear
      @list.clear
      self
    end

    # Public: Iterates over all of the contained objects and yields them out,
    # individually.
    #
    # Returns the CheckList instance.
    #
    def each(&block)
      @list.each(&block)
      self
    end

    # Public: Returns true if the list is empty.
    #
    def empty?
      @list.empty?
    end

    # Public: Returns the objects in the list in an Array.
    #
    def to_a
      @list.dup
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
rapporteur-3.8.0 lib/rapporteur/check_list.rb
rapporteur-3.7.2 lib/rapporteur/check_list.rb
rapporteur-3.7.1 lib/rapporteur/check_list.rb
rapporteur-3.7.0 lib/rapporteur/check_list.rb
rapporteur-3.6.4 lib/rapporteur/check_list.rb
rapporteur-3.6.3 lib/rapporteur/check_list.rb
rapporteur-3.6.2 lib/rapporteur/check_list.rb
rapporteur-3.6.1 lib/rapporteur/check_list.rb