Module: Roleplay

Defined in:
lib/roleplay.rb,
lib/roleplay/version.rb

Defined Under Namespace

Modules: ClassMethods

Constant Summary collapse

VERSION =
"0.0.3"

Instance Method Summary collapse

Instance Method Details

#included(base) ⇒ Object



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

def included(base)
  base.send(:extend, ClassMethods)
end

#playing(name) ⇒ Object Also known as: as_a



9
10
11
12
13
14
15
16
17
18
19
# File 'lib/roleplay.rb', line 9

def playing(name)
  modules = self.class.roles[name]
  raise "role #{name} does not define any modules" unless modules.present?
  value = self.dup
  value.singleton_class.send(:attr_accessor, :role)
  value.role = {name => modules}
  modules.each do |m|
    value.extend m
  end
  value
end

#playing!(name) ⇒ Object Also known as: as_a!



22
23
24
25
26
27
28
29
30
31
# File 'lib/roleplay.rb', line 22

def playing!(name)
  modules = self.class.roles[name]
  raise "role #{name} does not define any modules" unless modules.present?
  singleton_class.send(:attr_accessor, :role)
  self.role = {name => modules}
  modules.each do |m|
    extend m
  end
  self
end