Class: Degica::Context

Inherits:
BasicObject
Defined in:
lib/degica/context.rb

Instance Method Summary collapse

Constructor Details

#initialize(actor) ⇒ Context

Returns a new instance of Context.



3
4
5
6
# File 'lib/degica/context.rb', line 3

def initialize(actor)
  @actor = actor
  @focus = actor.focus || NilActionable.new
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method, *args) ⇒ Object



12
13
14
15
16
17
18
19
20
# File 'lib/degica/context.rb', line 12

def method_missing(method, *args)
  if match = @focus.actions.find { |action| action.name == method }
    @focus.do(match.name, *args)
  elsif match = @actor.actions.find { |action| action.name == method }
    @actor.do(match.name, *args)
  else
    super
  end
end

Instance Method Details

#actionsObject



8
9
10
# File 'lib/degica/context.rb', line 8

def actions
  (@actor.actions + @focus.actions).uniq(&:name)
end