Module: Kinda::Core::ObjectExtension

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



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

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)


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

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



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

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

#singleton_class_send(method_name, *args, &block) ⇒ Object



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

def singleton_class_send(method_name, *args, &block)
  singleton_class_eval { send(method_name, *args, &block) }
end

#tapObject



35
36
37
38
# File 'lib/core/object.rb', line 35

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

#to_classObject Also known as: to_module



24
25
26
# File 'lib/core/object.rb', line 24

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

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



40
41
42
# File 'lib/core/object.rb', line 40

def try(method_name, *args, &block)
  send(method_name, *args, &block) if respond_to?(method_name)
end