Module: Wizarding
Instance Method Summary
collapse
Methods included from Metaid
#class_def, #meta_def, #meta_eval, #metaclass
Instance Method Details
#inherited(c) ⇒ Object
24
25
26
27
|
# File 'lib/bats/modules/wizarding.rb', line 24
def inherited c
c.traits *traits.keys
c.instance_variable_set( :@traits, traits.dup )
end
|
#traits(*a) ⇒ Object
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
# File 'lib/bats/modules/wizarding.rb', line 6
def traits *a
return @traits if a.empty?
attr_accessor *a
a.each do | m |
@traits ||= {}
@traits[m] = nil
meta_def m do | *v |
@traits[m] = v[0] unless v.empty?
( v.empty? ) ? @traits[m] : self
end
end
class_def :initialize do
self.class.traits.each do | k, v |
instance_variable_set( "@#{k}", v )
end
end
end
|