module Finix::Utils

Public Instance Methods

callable(callable_or_not) click to toggle source
# File lib/finix/utils.rb, line 10
def callable(callable_or_not)
  callable_or_not.respond_to?(:call) ? callable_or_not : lambda { callable_or_not }
end
demodulize(class_name_in_module) click to toggle source
# File lib/finix/utils.rb, line 43
def demodulize(class_name_in_module)
  class_name_in_module.to_s.sub(/^.*::/, '')
end
eval_class(slf, cls) click to toggle source
# File lib/finix/utils.rb, line 3
def eval_class(slf, cls)
  mod = slf.class.name.sub(/::.*/, '') unless slf.kind_of? Class or slf.kind_of? Module
  mod = slf.name.sub(/::.*/, '') if mod.nil?
  name = demodulize cls.name
  self.instance_eval "#{mod}::#{name}"
end
indifferent_read_access(base = {}) click to toggle source
# File lib/finix/utils.rb, line 14
def indifferent_read_access(base = {})
  indifferent = Hash.new do |hash, key|
    hash[key.to_s] if key.is_a? Symbol
  end
  base.each_pair do |key, value|
    if value.is_a? Hash
      value = indifferent_read_access value
    elsif value.respond_to? :each
      if value.respond_to? :map!
        value.map! do |v|
          if v.is_a? Hash
            v = indifferent_read_access v
          end
          v
        end
      else
        value.map do |v|
          if v.is_a? Hash
            v = indifferent_read_access v
          end
          v
        end
      end
    end
    indifferent[key.to_s] = value
  end
  indifferent
end