Sha256: 95121b2e1393903e74c4f8a03c6b23467210b3538674ede4781bb249b497039f

Contents?: true

Size: 1.43 KB

Versions: 100

Compression:

Stored size: 1.43 KB

Contents

# frozen_string_literal: true

require 'active_support/dependencies'
require 'active_support/inflector'

module EacRubyUtils
  module RequireSub
    class SubFile
      attr_reader :owner, :path

      def initialize(owner, path)
        @owner = owner
        @path = path
      end

      def base_constant
        return nil unless owner.base?

        owner.base.const_get(constant_name)
      rescue ::NameError
        nil
      end

      def constant_name
        ::ActiveSupport::Inflector.camelize(::File.basename(path, '.rb'))
      end

      def include_module
        return unless module?

        owner.include_or_prepend_method.if_present do |v|
          owner.base.send(v, base_constant)
        end
      end

      def module?
        base_constant.is_a?(::Module) && !base_constant.is_a?(::Class)
      end

      def require_file
        active_support_require || autoload_require || kernel_require
      end

      private

      def active_support_require
        return false unless owner.active_support_require?

        ::Kernel.require_dependency(path)
        true
      end

      def autoload_require
        return false unless owner.base?

        basename = ::File.basename(path, '.*')
        return false if basename.start_with?('_')

        owner.base.autoload ::ActiveSupport::Inflector.camelize(basename), path
        true
      end

      def kernel_require
        ::Kernel.require(path)
      end
    end
  end
end

Version data entries

100 entries across 100 versions & 2 rubygems

Version Path
eac_tools-0.62.1 sub/eac_ruby_utils/lib/eac_ruby_utils/require_sub/sub_file.rb
eac_tools-0.62.0 sub/eac_ruby_utils/lib/eac_ruby_utils/require_sub/sub_file.rb
eac_tools-0.61.1 sub/eac_ruby_utils/lib/eac_ruby_utils/require_sub/sub_file.rb
eac_tools-0.61.0 sub/eac_ruby_utils/lib/eac_ruby_utils/require_sub/sub_file.rb
eac_tools-0.60.3 sub/eac_ruby_utils/lib/eac_ruby_utils/require_sub/sub_file.rb
eac_tools-0.60.2 sub/eac_ruby_utils/lib/eac_ruby_utils/require_sub/sub_file.rb
eac_tools-0.60.1 sub/eac_ruby_utils/lib/eac_ruby_utils/require_sub/sub_file.rb
eac_tools-0.60.0 sub/eac_ruby_utils/lib/eac_ruby_utils/require_sub/sub_file.rb
eac_tools-0.59.0 sub/eac_ruby_utils/lib/eac_ruby_utils/require_sub/sub_file.rb
eac_tools-0.58.0 sub/eac_ruby_utils/lib/eac_ruby_utils/require_sub/sub_file.rb
eac_tools-0.57.0 sub/eac_ruby_utils/lib/eac_ruby_utils/require_sub/sub_file.rb
eac_tools-0.56.1 sub/eac_ruby_utils/lib/eac_ruby_utils/require_sub/sub_file.rb
eac_tools-0.56.0 sub/eac_ruby_utils/lib/eac_ruby_utils/require_sub/sub_file.rb
eac_tools-0.55.7 sub/eac_ruby_utils/lib/eac_ruby_utils/require_sub/sub_file.rb
eac_tools-0.55.6 sub/eac_ruby_utils/lib/eac_ruby_utils/require_sub/sub_file.rb
eac_tools-0.55.5 sub/eac_ruby_utils/lib/eac_ruby_utils/require_sub/sub_file.rb
eac_tools-0.55.4 sub/eac_ruby_utils/lib/eac_ruby_utils/require_sub/sub_file.rb
eac_tools-0.55.3 sub/eac_ruby_utils/lib/eac_ruby_utils/require_sub/sub_file.rb
eac_tools-0.55.2 sub/eac_ruby_utils/lib/eac_ruby_utils/require_sub/sub_file.rb
eac_ruby_utils-0.112.0 lib/eac_ruby_utils/require_sub/sub_file.rb