class Kan::AbilitiesList

Constants

ROLES_DETECT

Public Class Methods

new(name, list) click to toggle source
# File lib/kan/abilities_list.rb, line 5
def initialize(name, list)
  @name = name
  @list = list
end

Public Instance Methods

call(*payload) click to toggle source
# File lib/kan/abilities_list.rb, line 10
def call(*payload)
  @name == ROLES_DETECT ? mapped_roles(payload) : ability_check(payload)
end

Private Instance Methods

ability_check(payload) click to toggle source
# File lib/kan/abilities_list.rb, line 16
def ability_check(payload)
  @list
    .select { |abilities| abilities.class.valid_role?(*payload) }
    .any? { |abilities| abilities.ability(@name).call(*payload) }
end
mapped_roles(payload) click to toggle source
# File lib/kan/abilities_list.rb, line 22
def mapped_roles(payload)
  @list.map do |abilities|
    abilities.class.valid_role?(*payload) ? abilities.class.role_name : nil
  end.compact
end