Sha256: 5433cdf33e37621bdc94021eb10fccf39679bcdf1afa787020fddb0e97effe8e

Contents?: true

Size: 1.17 KB

Versions: 277

Compression:

Stored size: 1.17 KB

Contents

# frozen_string_literal: true

require 'active_support/concern'
require 'eac_ruby_utils/common_concern/class_setup'
require 'eac_ruby_utils/simple_cache'
require 'eac_ruby_utils/patches/object/if_present'

module EacRubyUtils
  class CommonConcern
    class ModuleSetup
      include ::EacRubyUtils::SimpleCache
      attr_reader :a_module, :common_concern

      def initialize(common_concern, a_module)
        @common_concern = common_concern
        @a_module = a_module
      end

      def run
        a_module.extend(::ActiveSupport::Concern)
        include_or_prepend(:included, :include)
        include_or_prepend(:prepended, :prepend)
      end

      private

      def include_or_prepend(module_method, class_setup_method)
        setup = self
        a_module.send(module_method, *a_module_method_args(module_method)) do
          ::EacRubyUtils::CommonConcern::ClassSetup.new(setup, self, class_setup_method).run
        end
      end

      def a_module_method_args(module_method)
        method_arity = a_module.method(module_method).arity
        method_arity = -method_arity - 1 if method_arity.negative?
        method_arity.times.map { |_n| a_module }
      end
    end
  end
end

Version data entries

277 entries across 277 versions & 4 rubygems

Version Path
eac_ruby_utils-0.124.0 lib/eac_ruby_utils/common_concern/module_setup.rb
eac_tools-0.97.2 sub/eac_ruby_utils/lib/eac_ruby_utils/common_concern/module_setup.rb
eac_ruby_utils-0.123.0 lib/eac_ruby_utils/common_concern/module_setup.rb
eac_ruby_utils-0.121.0 lib/eac_ruby_utils/common_concern/module_setup.rb
eac_ruby_utils-0.120.0 lib/eac_ruby_utils/common_concern/module_setup.rb
eac_tools-0.76.1 sub/eac_ruby_utils/lib/eac_ruby_utils/common_concern/module_setup.rb
eac_tools-0.76.0 sub/eac_ruby_utils/lib/eac_ruby_utils/common_concern/module_setup.rb
eac_tools-0.75.2 sub/eac_ruby_utils/lib/eac_ruby_utils/common_concern/module_setup.rb
eac_ruby_utils-0.119.2 lib/eac_ruby_utils/common_concern/module_setup.rb
eac_tools-0.75.1 sub/eac_ruby_utils/lib/eac_ruby_utils/common_concern/module_setup.rb
eac_tools-0.75.0 sub/eac_ruby_utils/lib/eac_ruby_utils/common_concern/module_setup.rb
eac_ruby_utils-0.119.1 lib/eac_ruby_utils/common_concern/module_setup.rb
eac_tools-0.74.1 sub/eac_ruby_utils/lib/eac_ruby_utils/common_concern/module_setup.rb
eac_tools-0.74.0 sub/eac_ruby_utils/lib/eac_ruby_utils/common_concern/module_setup.rb
eac_tools-0.73.0 sub/eac_ruby_utils/lib/eac_ruby_utils/common_concern/module_setup.rb
eac_ruby_utils-0.119.0 lib/eac_ruby_utils/common_concern/module_setup.rb
eac_tools-0.72.0 sub/eac_ruby_utils/lib/eac_ruby_utils/common_concern/module_setup.rb
eac_ruby_utils-0.118.1 lib/eac_ruby_utils/common_concern/module_setup.rb
eac_ruby_utils-0.118.0 lib/eac_ruby_utils/common_concern/module_setup.rb
eac_tools-0.70.1 sub/eac_ruby_utils/lib/eac_ruby_utils/common_concern/module_setup.rb