Sha256: 23fb2cb4fad25dad6716ff35e54ed7f18e5a9e60fd3c5f9f0a6cca81e1274d06

Contents?: true

Size: 920 Bytes

Versions: 19

Compression:

Stored size: 920 Bytes

Contents

module Backports
  # Modified to avoid polluting Module if so desired
  # (from Rails)
  def self.alias_method_chain(mod, target, feature)
    mod.class_eval do
      # Strip out punctuation on predicates or bang methods since
      # e.g. target?_without_feature is not a valid method name.
      aliased_target, punctuation = target.to_s.sub(/([?!=])$/, ''), $1
      yield(aliased_target, punctuation) if block_given?

      with_method, without_method = "#{aliased_target}_with_#{feature}#{punctuation}", "#{aliased_target}_without_#{feature}#{punctuation}"

      alias_method without_method, target
      alias_method target, with_method

      case
        when public_method_defined?(without_method)
          public target
        when protected_method_defined?(without_method)
          protected target
        when private_method_defined?(without_method)
          private target
      end
    end
  end
end

Version data entries

19 entries across 19 versions & 2 rubygems

Version Path
backports-3.11.1 lib/backports/tools/alias_method_chain.rb
backports-3.11.0 lib/backports/tools/alias_method_chain.rb
backports-3.10.3 lib/backports/tools/alias_method_chain.rb
backports-3.10.2 lib/backports/tools/alias_method_chain.rb
backports-3.10.1 lib/backports/tools/alias_method_chain.rb
backports-3.10.0 lib/backports/tools/alias_method_chain.rb
backports-3.9.1 lib/backports/tools/alias_method_chain.rb
backports-3.9.0 lib/backports/tools/alias_method_chain.rb
backports-3.8.0 lib/backports/tools/alias_method_chain.rb
backports-3.7.0 lib/backports/tools/alias_method_chain.rb
mdg-1.0.1 vendor/bundle/ruby/2.3.0/gems/backports-3.6.8/lib/backports/tools/alias_method_chain.rb
backports-3.6.8 lib/backports/tools/alias_method_chain.rb
backports-3.6.7 lib/backports/tools/alias_method_chain.rb
backports-3.6.6 lib/backports/tools/alias_method_chain.rb
backports-3.6.5 lib/backports/tools/alias_method_chain.rb
backports-3.6.4 lib/backports/tools/alias_method_chain.rb
backports-3.6.3 lib/backports/tools/alias_method_chain.rb
backports-3.6.2 lib/backports/tools/alias_method_chain.rb
backports-3.6.1 lib/backports/tools/alias_method_chain.rb