Sha256: eab792ac6b0fdec14200c0f3bee684cde96211130542fb9ab686eaeb48b0cb7d

Contents?: true

Size: 1.41 KB

Versions: 11

Compression:

Stored size: 1.41 KB

Contents

module BootstrapForm
  # This module implements the old ActiveSupport alias_method_chain feature
  # with a new name, and without the deprecation warnings. In ActiveSupport 5+,
  # this style of patching was deprecated in favor of Module.prepend. But
  # Module.prepend is not present in Ruby 1.9, which we would still like to
  # support. So we continue to use of alias_method_chain, albeit with a
  # different name to avoid collisions.
  module Aliasing
    # This code is copied and pasted from ActiveSupport, but with :bootstrap
    # hardcoded as the feature name, and with the deprecation warning removed.
    def bootstrap_method_alias(target)
      feature = :bootstrap

      # Strip out punctuation on predicates, bang or writer 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 = "#{aliased_target}_with_#{feature}#{punctuation}"
      without_method = "#{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

11 entries across 11 versions & 3 rubygems

Version Path
bootstrap_form-4.0.0 lib/bootstrap_form/aliasing.rb
bootstrap_form-4.0.0.alpha1 lib/bootstrap_form/aliasing.rb
bootstrap_form_legacy-4.0.1.dev lib/bootstrap_form/aliasing.rb
comfy_bootstrap_form-4.0.0.beta1 lib/bootstrap_form/aliasing.rb
bootstrap_form-2.7.0 lib/bootstrap_form/aliasing.rb
bootstrap_form-2.6.0 lib/bootstrap_form/aliasing.rb
bootstrap_form-2.5.3 lib/bootstrap_form/aliasing.rb
bootstrap_form-2.5.2 lib/bootstrap_form/aliasing.rb
bootstrap_form-2.5.1 lib/bootstrap_form/aliasing.rb
bootstrap_form-2.5.0 lib/bootstrap_form/aliasing.rb
bootstrap_form-2.4.0 lib/bootstrap_form/aliasing.rb