Module: Kinda::Core::Object

Included in:
Object
Defined in:
lib/core/object.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(klass) ⇒ Object



4
5
6
# File 'lib/core/object.rb', line 4

def self.included(klass)
  klass.alias_method_chain :extend, :flexible_arguments
end

Instance Method Details

#extend_with_flexible_arguments(*modules) ⇒ Object



26
27
28
29
# File 'lib/core/object.rb', line 26

def extend_with_flexible_arguments(*modules)
  mods = modules.flatten
  extend_without_flexible_arguments(*mods) unless mods.empty?
end

#object_hexidObject



8
9
10
# File 'lib/core/object.rb', line 8

def object_hexid
  "0x" + ('%.x' % (self.__id__ * 2))
end

#parse_arguments(args, *defaults) ⇒ Object

Raises:

  • (ArgumentError)


49
50
51
52
53
54
55
56
# File 'lib/core/object.rb', line 49

def parse_arguments(args, *defaults)
  args = args.dup
  options = args.last.is_a?(Hash) ? args.pop : {}
  raise ArgumentError, "Too many arguments (#{args.size} for #{defaults.size})" if
    args.size > defaults.size
  defaults.drop(args.size).each { |default| args << default }
  args << options
end

#receiverObject



43
44
45
# File 'lib/core/object.rb', line 43

def receiver
  self
end

#singleton_classObject



12
13
14
# File 'lib/core/object.rb', line 12

def singleton_class
  class << self; self; end
end

#singleton_class_eval(&block) ⇒ Object



16
17
18
# File 'lib/core/object.rb', line 16

def singleton_class_eval(&block)
  singleton_class.class_eval(&block)
end

#tapObject



31
32
33
34
# File 'lib/core/object.rb', line 31

def tap
  return super if block_given?
  Functor.new { |method, *args| self.send(method, *args); self }
end

#to_classObject Also known as: to_module



20
21
22
# File 'lib/core/object.rb', line 20

def to_class
  kind_of?(Module) ? self : singleton_class
end

#try(methods, *args, &block) ⇒ Object



36
37
38
39
40
41
# File 'lib/core/object.rb', line 36

def try(methods, *args, &block)
  methods = [*methods].dup
  return self if methods.empty?
  send(methods.shift, *args, &block).try(methods, *args, &block) if
    respond_to?(methods.first)
end