class Object

Public Instance Methods

callable?() click to toggle source
# File lib/abstractivator/proc_ext.rb, line 173
def callable?
  respond_to?(:call)
end
define_enum(name, *fields) click to toggle source
# File lib/abstractivator/enum.rb, line 63
def define_enum(name, *fields)
  if respond_to?(:const_set)
    const_set(name, make_enum(*fields))
  else # top-level
    Object.send(:const_set, name, make_enum(*fields))
  end
end
make_enum(*fields) click to toggle source
# File lib/abstractivator/enum.rb, line 71
def make_enum(*fields)
  if fields.size == 1 && fields.first.is_a?(Hash) && fields.first.keys.all?{|f| f.is_a?(Symbol)}
    fields = fields.first
    Class.new do
      include Enum
      private_class_method :new
      fields.each_pair do |k, v|
        val = new(v)
        fld = k.to_s.upcase.to_sym
        const_set(fld, val)
      end
    end
  elsif fields.all?{|f| f.is_a?(Symbol)}
    make_enum(fields.hash_map(&:to_s))
  else
    raise 'Arguments must be one or more symbols or a single symbol-keyed hash'
  end
end
proxy_send(method_name, *args, **kws, &block) click to toggle source
# File lib/abstractivator/proc_ext.rb, line 177
def proxy_send(method_name, *args, **kws, &block)
  if method(method_name).accepts_keywords
    send(method_name, *args, **kws, &block)
  elsif kws.any?
    send(method_name, *(args + [kws]), &block)
  else
    send(method_name, *args, &block)
  end
end
value_map() { |self| ... } click to toggle source
# File lib/abstractivator/value_map.rb, line 12
def value_map
  yield self
end