Sha256: 0e386ec5254076f13efb18add9ae32f62313c89f7a87fb2a95b08b39ddb8bb2d

Contents?: true

Size: 713 Bytes

Versions: 147

Compression:

Stored size: 713 Bytes

Contents

# frozen_string_literal: true

class Object
  # A duck-type assistant method. For example, Active Support extends Date
  # to define an <tt>acts_like_date?</tt> method, and extends Time to define
  # <tt>acts_like_time?</tt>. As a result, we can do <tt>x.acts_like?(:time)</tt> and
  # <tt>x.acts_like?(:date)</tt> to do duck-type-safe comparisons, since classes that
  # we want to act like Time simply need to define an <tt>acts_like_time?</tt> method.
  def acts_like?(duck)
    case duck
    when :time
      respond_to? :acts_like_time?
    when :date
      respond_to? :acts_like_date?
    when :string
      respond_to? :acts_like_string?
    else
      respond_to? :"acts_like_#{duck}?"
    end
  end
end

Version data entries

147 entries across 138 versions & 16 rubygems

Version Path
activesupport-6.1.7.10 lib/active_support/core_ext/object/acts_like.rb
activesupport-6.1.7.9 lib/active_support/core_ext/object/acts_like.rb
activesupport-6.1.7.8 lib/active_support/core_ext/object/acts_like.rb
activesupport-6.1.7.7 lib/active_support/core_ext/object/acts_like.rb
scrapbook-0.3.2 vendor/ruby/2.7.0/gems/activesupport-6.1.6.1/lib/active_support/core_ext/object/acts_like.rb
activesupport-6.1.7.6 lib/active_support/core_ext/object/acts_like.rb
activesupport-6.1.7.5 lib/active_support/core_ext/object/acts_like.rb
activesupport-6.1.7.4 lib/active_support/core_ext/object/acts_like.rb
scrapbook-0.3.1 vendor/ruby/2.7.0/gems/activesupport-6.1.6.1/lib/active_support/core_ext/object/acts_like.rb
mumukit-content-type-1.12.1 vendor/bundle/ruby/2.7.0/gems/activesupport-6.0.6.1/lib/active_support/core_ext/object/acts_like.rb
mumukit-content-type-1.12.0 vendor/bundle/ruby/2.7.0/gems/activesupport-6.0.6.1/lib/active_support/core_ext/object/acts_like.rb
activesupport-6.1.7.3 lib/active_support/core_ext/object/acts_like.rb
activesupport-6.1.7.2 lib/active_support/core_ext/object/acts_like.rb
activesupport-6.1.7.1 lib/active_support/core_ext/object/acts_like.rb
activesupport-6.0.6.1 lib/active_support/core_ext/object/acts_like.rb
activesupport-6.1.7 lib/active_support/core_ext/object/acts_like.rb
activesupport-6.0.6 lib/active_support/core_ext/object/acts_like.rb
activesupport-6.1.6.1 lib/active_support/core_ext/object/acts_like.rb
activesupport-6.0.5.1 lib/active_support/core_ext/object/acts_like.rb
activesupport-5.2.8.1 lib/active_support/core_ext/object/acts_like.rb