Module: Kinda::Core::Object
- 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
- #tap ⇒ Object
- #to_class ⇒ Object (also: #to_module)
- #try(methods, *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
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_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
49 50 51 52 53 54 55 56 |
# File 'lib/core/object.rb', line 49 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
43 44 45 |
# File 'lib/core/object.rb', line 43 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 |
#tap ⇒ Object
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_class ⇒ Object 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 |