class Narrative::RoleDefinition

Attributes

name[R]

Public Class Methods

new(name, partners, &responsibilities) click to toggle source
# File lib/narrative/role_definition.rb, line 5
def initialize(name, partners, &responsibilities)
  @name = name
  @partners = partners
  @responsibilities = responsibilities
end

Public Instance Methods

cast!(actors) click to toggle source
# File lib/narrative/role_definition.rb, line 11
def cast!(actors)
  role = Module.new(&@responsibilities)
  acquaint! role, actors.slice(*@partners)

  actors[@name].extend(role)
end

Private Instance Methods

acquaint!(role_module, partners) click to toggle source
# File lib/narrative/role_definition.rb, line 20
def acquaint!(role_module, partners)
  role_module.instance_eval do
    partners.each do |role_name, partner|
      define_method(role_name) { partner }
      private role_name
    end
  end
end