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

Yields:

  • ()

Raises:



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

.resetObject



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