class Kungfuig::Aspector::H

Helper methods

Public Instance Methods

proc_instance(string) click to toggle source
# File lib/kungfuig/aspector.rb, line 34
def proc_instance string
  m, k = string.split('#').reverse
  (k ? Kernel.const_get(k).method(m) : method(m)).to_proc
end
remap_hash_for_easy_iteration(hash) click to toggle source
# File lib/kungfuig/aspector.rb, line 25
def remap_hash_for_easy_iteration hash
  hash = hash.each_with_object(Hashie::Mash.new) do |(k, v), memo|
    v.each { |m, c| memo.public_send("#{m}!")[k] = c }
  end unless (hash.keys - %w(before after exclude)).empty?
  hash.each_with_object({}) do |(k, v), memo|
    v.each { |m, h| ((memo[h] ||= {})[k.to_sym] ||= []) << m }
  end
end
try_to_class(name) click to toggle source
# File lib/kungfuig/aspector.rb, line 39
def try_to_class name
  Kernel.const_defined?(name.to_s) ? Kernel.const_get(name.to_s) : name
end
value_to_method_list(klazz, values_inc, values_exc) click to toggle source
# File lib/kungfuig/aspector.rb, line 6
def value_to_method_list klazz, values_inc, values_exc
  # FIXME MOVE JOKER HANDLING INTO PREPENDER !!!!
  if klazz.is_a?(Module)
    [values_inc, values_exc].map do |v|
      v = [*v].map(&:to_sym)
      case
      when v.empty? then []
      when v.include?('*'), v.include?(:'*') then klazz.instance_methods(false)
      else klazz.instance_methods & v
      end
    end.reduce(&:-) - klazz.instance_methods(false).select { |m| m.to_s.start_with?('to_') }
  else
    # NOT YET IMPLEMENTED FIXME MOVE TO PREPENDER
    [values_inc, values_exc].map do |v|
      [*v].map(&:to_sym)
    end.reduce(&:-) - [:'*']
  end
end