Class: AbilityDefinition

Inherits:
Object
  • Object
show all
Defined in:
lib/generators/ability_definition.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeAbilityDefinition

Returns a new instance of AbilityDefinition.



26
27
28
# File 'lib/generators/ability_definition.rb', line 26

def initialize
  @cans, @cannots = [], []
end

Instance Attribute Details

#cannotsObject

Returns the value of attribute cannots.



5
6
7
# File 'lib/generators/ability_definition.rb', line 5

def cannots
  @cannots
end

#cansObject

Returns the value of attribute cans.



5
6
7
# File 'lib/generators/ability_definition.rb', line 5

def cans
  @cans
end

Class Method Details

.extract(string) ⇒ Object



18
19
20
# File 'lib/generators/ability_definition.rb', line 18

def self.extract(string)
  return *string.gsub(/[\[\]\s]/, '').split(',')
end

.modelsObject



22
23
24
# File 'lib/generators/ability_definition.rb', line 22

def self.models
  @@ability_definitions
end

.parse(definitions) ⇒ Object



7
8
9
10
11
12
13
14
15
16
# File 'lib/generators/ability_definition.rb', line 7

def self.parse(definitions)
  @@ability_definitions ||= {}
  limitation, ability_list, model_list = *definitions.split(':')
  ability_names, model_names = extract(ability_list), extract(model_list)
  model_names.each do |model_name|
    definition = @@ability_definitions[model_name] || AbilityDefinition.new
    definition.merge(limitation.pluralize, ability_names)
    @@ability_definitions[model_name] = definition
  end
end

Instance Method Details

#canObject



35
36
37
# File 'lib/generators/ability_definition.rb', line 35

def can
  @cans
end

#cannotObject



39
40
41
# File 'lib/generators/ability_definition.rb', line 39

def cannot
  @cannots
end

#merge(limitation, ability_names) ⇒ Object



30
31
32
33
# File 'lib/generators/ability_definition.rb', line 30

def merge(limitation, ability_names)
  combined_ability_names = instance_variable_get("@#{limitation}") | ability_names
  instance_variable_set("@#{limitation}", combined_ability_names)
end