Module: Summoner
- Defined in:
- lib/summoner.rb,
lib/summoner/beast.rb,
lib/summoner/version.rb,
lib/summoner/attributes.rb
Defined Under Namespace
Classes: Attributes, Beast
Constant Summary
collapse
- VERSION =
"0.0.1"
- @@beasts =
{}
Class Method Summary
collapse
Class Method Details
.prepare(name, options = {}) {|| ... } ⇒ Object
24
25
26
27
28
29
|
# File 'lib/summoner.rb', line 24
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
31
32
33
|
# File 'lib/summoner.rb', line 31
def self.reset
@@beasts.clear
end
|
.summon(name, attrs = {}) ⇒ Object
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
# File 'lib/summoner.rb', line 8
def self.summon(name, attrs = {})
raise UnpreparedBeastError unless @@beasts.has_key? name
@@beasts[name].attributes = @@beasts[name].attributes.merge(attrs)
klass = @@beasts[name].options.has_key?(:class) ? @@beasts[name].options[:class] : eval(name.to_s.capitalize)
monster = klass.create(@@beasts[name].attributes)
if block_given?
yield @@beasts[name]
end
monster.update_attributes(@@beasts[name].attributes)
monster
end
|