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_names, model_names = *definitions.split(':')
  abilities, models = extract(ability_names), extract(model_names)
  models.each do |model|
    definition = @@ability_definitions[model] || AbilityDefinition.new
    definition.merge(limitation.pluralize, abilities)
    @@ability_definitions[model] = 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, abilities) ⇒ Object



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

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