class EacRubyUtils::GemsRegistry::Gem

def <=>(other)

def <=>(other)
  sd = depend_on(other)
  od = other.depend_on(self)
  return 1 if sd && !od
  return -1 if od && !sd
  gemspec.name <=> other.gemspec.name
end

def depend_on(gem)

def depend_on(gem)
  dependencies.lazy.map(&:name).include?(gem.gemspec.name)
end

def dependencies

def dependencies
  @dependencies ||= dependencies_uncached # dependencies_uncached
end

def dependencies_uncached

def dependencies_uncached
  ::EacRubyUtils::RecursiveBuilder
    .new(gemspec) { |item| gem_item_dependencies(item) }
    .result
end

def found?

def found?
  lib_file_found? && registered_module.is_a?(::Module)
end

def gem_item_dependencies(item)

def gem_item_dependencies(item)
  ::Gem::Specification.find_by_name(item.name).dependencies
rescue ::Gem::MissingSpecError
  []
end

def initialize(registry, gemspec)

def initialize(registry, gemspec)
  @registry = registry
  @gemspec = gemspec
end

def lib_file_found?

def lib_file_found?
  gemspec.require_paths.any? do |require_path|
    ::Pathname.new(require_path).expand_path(gemspec.gem_dir).join(path_to_require + '.rb')
      .file?
  end
end

def path_to_require

Returns:
  • (String) -
def path_to_require
  gemspec.name.gsub('-', '/') + '/' + registry.module_suffix.underscore
end

def registered_module

def registered_module
  return nil unless lib_file_found?
  require path_to_require
  path_to_require.classify.constantize
end

def to_s

def to_s
  "#{self.class.name}[#{gemspec.name}]"
end