class Acting::Actor
Public Class Methods
new(actor, role)
click to toggle source
# File lib/acting.rb, line 60 def initialize(actor, role) raise "#{actor.inspect} not kind of Acting::Cast" unless actor.kind_of? Cast @actor = actor @role = role end
Public Instance Methods
play()
click to toggle source
# File lib/acting.rb, line 66 def play assign_behaviour end
quit()
click to toggle source
# File lib/acting.rb, line 70 def quit revoke_behaviour end
Private Instance Methods
assign_behaviour()
click to toggle source
# File lib/acting.rb, line 98 def assign_behaviour @actor.send :__inject_methods__, role_methods end
revoke_behaviour()
click to toggle source
# File lib/acting.rb, line 102 def revoke_behaviour @actor.send :__remove_methods__, role_methods end
role_methods()
click to toggle source
# File lib/acting.rb, line 75 def role_methods unless @role_methods method_names = @role.instance_methods if RUBY_VERSION =~ /2\.0/ @role_methods = method_names.map do |name| @role.instance_method name end else # interim object so we can bind the method # willy nilly (no 'kind_of?(@role) == true' required) object = Object.new object.extend @role @role_methods = method_names.map do |name| object.method(name).unbind end end end @role_methods end