Module: Wizarding

Includes:
Metaid
Included in:
Bats, HTTPResponse::Response
Defined in:
lib/bats/modules/wizarding.rb

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