Sha256: c262138ef44e23a25c1bf3d9875336068c77ccef39b0e7baf8612b0a2a3d52e2

Contents?: true

Size: 1.25 KB

Versions: 2

Compression:

Stored size: 1.25 KB

Contents

module BarkestCore
  ##
  # A repository for user alert generators.
  #
  # Register any alert generators that you want to give the user automatically at login.
  #
  class UserAlertGenerators

    ##
    # Enumerates all of the generators that have been registered.
    #
    # Yields the +type+ and +generator+.
    def self.each(&block)
      return unless block_given?
      list.each do |type,generators|
        generators.each do |generator|
          yield type, generator
        end
      end
    end

    ##
    # Gets all of the generators that have been registered.
    #
    # This list does not include the type.
    def self.all
      list.values.flatten.freeze
    end

    ##
    # Gets a subset of the generators that have been registered.
    #
    # Provide the type of generators you would like to return.
    def self.[](type)
      type ||= :info
      type = type.to_sym
      (list[type] || []).freeze
    end

    ##
    # Registers an alert generator.
    #
    # The generator shold be designed to take a User model as an argument.
    def self.register(type = nil, &block)
      type ||= :info
      type = type.to_sym
      list[type] ||= []
      list[type] << block
    end

    private

    def self.list
      @list ||= {}
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
barkest_core-1.5.4.0 app/models/barkest_core/user_alert_generators.rb
barkest_core-1.5.3.0 app/models/barkest_core/user_alert_generators.rb