module Dogviz::Flowable

Public Instance Methods

does(action) click to toggle source
# File lib/dogviz/flowable.rb, line 5
def does(action)
  Process.new(self, action)
end
method_missing(m, *args, &block) click to toggle source
# File lib/dogviz/flowable.rb, line 28
def method_missing(m, *args, &block)
  if requests.has_key?(m)
    @flow ||= nil

    request_def = requests[m]
    if request_def.is_a?(String)
      label = request_def
      return_label = nil
    else
      request_def = request_def.call(*args) if request_def.is_a?(Proc)
      label = request_def.keys.first
      return_label = request_def.values.first
    end
    
    @flow.next_call self, label
    block.call if block_given?
    @flow.end_call(return_label)
  else
    raise "this flowable does not know about receiving '#{m}', only know about: #{requests.keys}"
  end
end
note(where, what) click to toggle source
# File lib/dogviz/flowable.rb, line 16
def note(where, what)
  @flow.add_note(self, where, what)
end
receives(requests, &block) click to toggle source
# File lib/dogviz/flowable.rb, line 9
def receives(requests, &block)
  
  @requests = self.requests.merge requests if requests.is_a?(Hash)
  self.requests[requests] = block if requests.is_a?(Symbol)

end
request_handlers() click to toggle source
# File lib/dogviz/flowable.rb, line 54
def request_handlers
  @request_handlers ||= {}
end
requests() click to toggle source
# File lib/dogviz/flowable.rb, line 50
def requests
  @requests ||= {}
end
start_flow(flow) click to toggle source
# File lib/dogviz/flowable.rb, line 20
def start_flow(flow)
  @flow = flow
end
stop_flow() click to toggle source
# File lib/dogviz/flowable.rb, line 24
def stop_flow
  @flow = nil
end