module Kind::Try
Public Class Methods
[](*args)
click to toggle source
# File lib/kind/try.rb, line 31 def self.[](*args) method_name = args.shift ->(object) { call!(object, method_name, args) } end
Public Instance Methods
call(object, *input) { |result| ... }
click to toggle source
# File lib/kind/try.rb, line 17 def call(object, *input) args = input.size == 1 && input[0].kind_of?(::Array) ? input[0] : input result = call!(object, args.shift, args) return result unless block_given? yield(result) unless KIND.nil_or_undefined?(result) end
call!(object, method_name, args = Empty::ARRAY)
click to toggle source
# File lib/kind/try.rb, line 11 def call!(object, method_name, args = Empty::ARRAY) # :nodoc return if KIND.nil_or_undefined?(object) resolve(object, method_name, args) end
presence(*args, &block)
click to toggle source
# File lib/kind/try.rb, line 27 def presence(*args, &block) Presence.(call(*args, &block)) end
Private Instance Methods
resolve(object, method_name, args)
click to toggle source
# File lib/kind/try.rb, line 39 def resolve(object, method_name, args) return unless object.respond_to?(method_name) return object.public_send(method_name) if args.empty? object.public_send(method_name, *args) end