class Gemirro::GemVersionCollection

The VersionCollection class contains a collection of ::Gem::Version

@!attribute [r] gems

@return [Array]

@!attribute [r] grouped

@return [Array]

Attributes

gems[R]
grouped[R]

Public Class Methods

new(gems = []) click to toggle source

@param [Array] gems

# File lib/gemirro/gem_version_collection.rb, line 20
def initialize(gems = [])
  @gems = gems.map do |object|
    if object.is_a?(GemVersion)
      object
    else
      GemVersion.new(*object)
    end
  end

  @gems.sort_by!(&:version)
end

Public Instance Methods

by_name(&block) click to toggle source

Group gems by name

@param [Proc] block @return [Array]

# File lib/gemirro/gem_version_collection.rb, line 72
def by_name(&block)
  if @grouped.nil?
    @grouped = @gems.group_by(&:name).map do |name, collection|
      [name, GemVersionCollection.new(collection)]
    end

    @grouped.reject! do |name, _collection|
      name.nil?
    end

    @grouped.sort_by! do |name, _collection|
      name.downcase
    end
  end

  if block_given?
    @grouped.each(&block)
  else
    @grouped
  end
end
each(&block) click to toggle source

Each method

# File lib/gemirro/gem_version_collection.rb, line 62
def each(&block)
  @gems.each(&block)
end
find_by_name(gemname) click to toggle source

Find gem by name

@param [String] gemname @return [Array]

# File lib/gemirro/gem_version_collection.rb, line 100
def find_by_name(gemname)
  gem = by_name.select do |name, _collection|
    name == gemname
  end

  gem.first.last if gem.any?
end
newest() click to toggle source

Return newest version of a gem

@return [GemVersion]

# File lib/gemirro/gem_version_collection.rb, line 46
def newest
  @gems.last
end
oldest() click to toggle source

Return oldest version of a gem

@return [GemVersion]

# File lib/gemirro/gem_version_collection.rb, line 37
def oldest
  @gems.first
end
size() click to toggle source

Return size of a gem

@return [Integer]

# File lib/gemirro/gem_version_collection.rb, line 55
def size
  @gems.size
end