Module: Screenplay::Cast

Extended by:
Cast
Includes:
Enumerable
Included in:
Cast
Defined in:
lib/screenplay/cast.rb

Overview

The Cast module is a singleton which is available for actors to register themselves and make themselves available.

Instance Method Summary collapse

Instance Method Details

#autoloadObject



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/screenplay/cast.rb', line 28

def autoload
  # Require all standard actors
  Dir[File.dirname(__FILE__) + '/actors/*.rb'].each { | filename |
    require filename
  }
  ## Require custom actors
  @actors_path = $SCREENPLAY_ACTORS_DIR || Configuration[:general][:actors_dir] rescue  File.join(Configuration.path, 'actors')
  Dir[@actors_path + '/**/*.rb'].each { | filename |
    require filename
  }

  ## Create an instance of each actor and register it to the cast
  Actor.descendants.each { | klass |
    name = klass.name.match(/(\w+)(Actor)?$/)[0].gsub(/Actor$/, '').snake_case
    register(klass.new(name))
  }
end

#eachObject



17
18
19
# File 'lib/screenplay/cast.rb', line 17

def each
  @actors.each { | actor | yield actor }
end

#get(actor_name) ⇒ Object



21
22
23
24
25
26
# File 'lib/screenplay/cast.rb', line 21

def get(actor_name)
  @actors.each { | actor |
    return actor if actor.name == actor_name.to_sym
  }
  return nil
end

#register(actor) ⇒ Object



11
12
13
14
15
# File 'lib/screenplay/cast.rb', line 11

def register(actor)
  raise "Actor #{actor.name} is already registered." if @actors.include?(actor.name)
  @actors.push(actor)
  @actors.sort_by!{ | actor | actor.name }
end