Module: Summoner
- Defined in:
- lib/summoner.rb,
lib/summoner/beast.rb,
lib/summoner/version.rb,
lib/summoner/attributes.rb
Defined Under Namespace
Modules: ClassMethods
Classes: Attributes, Beast
Constant Summary
collapse
- VERSION =
"0.1.3"
- @@beasts =
{}
Class Method Summary
collapse
Class Method Details
.prepare(name, options = {}) {|| ... } ⇒ Object
27
28
29
30
31
32
|
# File 'lib/summoner.rb', line 27
def self.prepare(name, options = {}, &block)
key = name.to_sym
raise DefinitionDuplicatedError if @@beasts.has_key? key
@@beasts[key] = Beast.new(options)
yield @@beasts[key]
end
|
.reset ⇒ Object
34
35
36
|
# File 'lib/summoner.rb', line 34
def self.reset
@@beasts.clear
end
|
.summon(name, attrs = {}) ⇒ Object
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
# File 'lib/summoner.rb', line 9
def self.summon(name, attrs = {})
raise UnpreparedBeastError unless @@beasts.has_key? name
klass = @@beasts[name].options.has_key?(:class) ? @@beasts[name].options[:class] : eval(name.to_s.capitalize)
monster = klass.create(@@beasts[name].attributes.merge(attrs.symbolize_keys))
if block_given?
bicho = Beast.new
yield bicho
monster.update_attributes(monster.attributes.merge(bicho.attributes))
end
monster.save(:validate => false)
monster.reload
monster
end
|