class Redwood::HookManager::HookContext

Public Class Methods

new(name) click to toggle source
# File lib/sup/hook.rb, line 7
def initialize name
  @__say_id = nil
  @__name = name
  @__cache = {}
end

Public Instance Methods

__run(__hook, __filename, __locals) click to toggle source
# File lib/sup/hook.rb, line 51
def __run __hook, __filename, __locals
  __binding = binding
  __lprocs, __lvars = __locals.partition { |k, v| v.is_a?(Proc) }
  eval __lvars.map { |k, v| "#{k} = __locals[#{k.inspect}];" }.join, __binding
  ## we also support closures for delays evaluation. unfortunately
  ## we have to do this via method calls, so you don't get all the
  ## semantics of a regular variable. not ideal.
  __lprocs.each do |k, v|
    self.class.instance_eval do
      define_method k do
        @__cache[k] ||= v.call
      end
    end
  end
  ret = eval __hook, __binding, __filename
  BufferManager.clear @__say_id if @__say_id
  @__cache = {}
  ret
end
ask_yes_or_no(q) click to toggle source
# File lib/sup/hook.rb, line 34
def ask_yes_or_no q
  if BufferManager.instantiated?
    BufferManager.ask_yes_or_no q
  else
    print q
    gets.chomp.downcase == 'y'
  end
end
flash(s) click to toggle source
# File lib/sup/hook.rb, line 22
def flash s
  if BufferManager.instantiated?
    BufferManager.flash s
  else
    log s
  end
end
get(tag) click to toggle source
# File lib/sup/hook.rb, line 43
def get tag
  HookManager.tags[tag]
end
log(s) click to toggle source
# File lib/sup/hook.rb, line 30
def log s
  info "hook[#@__name]: #{s}"
end
say(s) click to toggle source
# File lib/sup/hook.rb, line 13
def say s
  if BufferManager.instantiated?
    @__say_id = BufferManager.say s, @__say_id
    BufferManager.draw_screen
  else
    log s
  end
end
set(tag, value) click to toggle source
# File lib/sup/hook.rb, line 47
def set tag, value
  HookManager.tags[tag] = value
end