Module: Kinda::Core::ObjectExtension
- Included in:
- Object
- Defined in:
- lib/core/object.rb
Class Method Summary collapse
Instance Method Summary collapse
- #extend_with_flexible_arguments(*modules) ⇒ Object
- #object_hexid ⇒ Object
- #parse_arguments(args, *defaults) ⇒ Object
- #receiver ⇒ Object
- #singleton_class ⇒ Object
- #singleton_class_eval(&block) ⇒ Object
- #singleton_class_send(method_name, *args, &block) ⇒ Object
- #tap ⇒ Object
- #to_class ⇒ Object (also: #to_module)
- #try(method_name, *args, &block) ⇒ Object
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_hexid ⇒ Object
8 9 10 |
# File 'lib/core/object.rb', line 8 def object_hexid "0x" + ('%.x' % (self.__id__ * 2)) end |
#parse_arguments(args, *defaults) ⇒ Object
50 51 52 53 54 55 56 57 |
# File 'lib/core/object.rb', line 50 def parse_arguments(args, *defaults) args = args.dup = 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 << end |
#receiver ⇒ Object
44 45 46 |
# File 'lib/core/object.rb', line 44 def receiver self end |
#singleton_class ⇒ Object
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 |
#tap ⇒ Object
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_class ⇒ Object 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 |