class Kan::Application

Public Class Methods

new(scopes = {}) click to toggle source
# File lib/kan/application.rb, line 5
def initialize(scopes = {})
  raise(InvalidScopeError) unless scopes.is_a?(Hash)
  raise(InvalidScopeError) if scopes.empty?

  @scopes = Hash(scopes)
  @abilities_lists = {}
end

Public Instance Methods

[](ability) click to toggle source
# File lib/kan/application.rb, line 13
def [](ability)
  scope, ability_name = ability.split('.')
  abilities = Array(@scopes[scope.to_sym])

  raise_scope_error(scope) if abilities.empty?
  return @abilities_lists[ability] if @abilities_lists[ability]

  @abilities_lists[ability] = AbilitiesList.new(ability_name, abilities)
end

Private Instance Methods

raise_scope_error(scope) click to toggle source
# File lib/kan/application.rb, line 25
def raise_scope_error(scope)
  raise ArgumentError.new("Invalid scope #{scope}")
end