Sha256: 38942c51db32b5e7e6dbb3e7f8aa74d46298e10866f2b0efc90a6d50df2d413a

Contents?: true

Size: 826 Bytes

Versions: 10

Compression:

Stored size: 826 Bytes

Contents

require "delegate"

module Support
  module Tryable #:nodoc:
    def try(method_name = nil, *args, &b)
      if method_name.nil? && block_given?
        if b.arity == 0
          instance_eval(&b)
        else
          yield self
        end
      elsif respond_to?(method_name)
        public_send(method_name, *args, &b)
      end
    end

    def try!(method_name = nil, *args, &b)
      if method_name.nil? && block_given?
        if b.arity == 0
          instance_eval(&b)
        else
          yield self
        end
      else
        public_send(method_name, *args, &b)
      end
    end
  end
end

class Object
  include Support::Tryable
end

class Delegator
  include Support::Tryable
end

class NilClass
  def try(_method_name = nil, *, **)
    nil
  end

  def try!(_method_name = nil, *, **)
    nil
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
paradocs-1.1.6 lib/paradocs/support.rb
paradocs-1.1.5 lib/paradocs/support.rb
paradocs-1.1.4 lib/paradocs/support.rb
paradocs-1.1.3 lib/paradocs/support.rb
paradocs-1.1.2 lib/paradocs/support.rb
paradocs-1.1.1 lib/paradocs/support.rb
paradocs-1.1.0 lib/paradocs/support.rb
paradocs-1.0.24 lib/paradocs/support.rb
paradocs-1.0.23 lib/paradocs/support.rb
paradocs-1.0.22 lib/paradocs/support.rb