Sha256: 3163c0997ab5a72ef1dc61a881183893dd469eb84cef1d3e977c2028ef7c343f

Contents?: true

Size: 923 Bytes

Versions: 3

Compression:

Stored size: 923 Bytes

Contents

module Roles::Base
  def valid_roles_are(*role_list)
    strategy_class.valid_roles = role_list.to_symbols
    if role_class_name
      role_list.each do |name| 
        role_class_name.new(name)
      end
    end
  end
end

class Role
  attr_accessor :name
  
  def self.find_role role_name    
    role_name = Roles::Generic::RoleUtil.extract_role(role_name)
    roles.to_a.select do |r| 
      r.name.to_sym == role_name.to_sym
    end.first
  end  

  def self.find_roles *role_names
    result = Set.new
    role_names.to_symbols.each do |role_name| 
      found_role = find_role(role_name)
      result << found_role if found_role
    end
    result
  end

  class << self
    attr_accessor :roles
    
    def all
      roles.to_a
    end
    
    def names
      roles.map(&:name)
    end
  end    
  
  def initialize name
    @name = name
    self.class.roles ||= Set.new
    self.class.roles << self
  end  
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
roles_generic-0.3.5 lib/roles_generic/role.rb
roles_generic-0.3.4 lib/roles_generic/role.rb
roles_generic-0.3.3 lib/roles_generic/role.rb