# class Gem::NameTuple

Represents a gem of name `name` at `version` of `platform`. These wrap the data returned from the indexes.

### Attributes

name[R]
platform[R]
version[R]

### Public Class Methods

from_list(list) click to toggle source

Turn an array of [name, version, platform] into an array of `NameTuple` objects.

    # File lib/rubygems/name_tuple.rb, line 25
    def self.from_list(list)
      list.map {|t| new(*t) }
    end

new(name, version, platform="ruby") click to toggle source

    # File lib/rubygems/name_tuple.rb, line 8
    def initialize(name, version, platform="ruby")
      @name = name
      @version = version

      unless platform.kind_of? Gem::Platform
        platform = "ruby" if !platform || platform.empty?
      end

      @platform = platform
    end

null() click to toggle source

A null `NameTuple`, ie name=nil, version=0

    # File lib/rubygems/name_tuple.rb, line 40
    def self.null
      new nil, Gem::Version.new(0), nil
    end

to_basic(list) click to toggle source

Turn an array of `NameTuple` objects back into an array of

name, version, platform

  tuples.

    # File lib/rubygems/name_tuple.rb, line 33
    def self.to_basic(list)
      list.map {|t| t.to_a }
    end

### Public Instance Methods

<=>(other) click to toggle source

    # File lib/rubygems/name_tuple.rb, line 91
    def <=>(other)
      [@name, @version, Gem::Platform.sort_priority(@platform)] <=>
        [other.name, other.version, Gem::Platform.sort_priority(other.platform)]
    end

==(other) click to toggle source

Compare with `other`. Supports another `NameTuple` or an `Array` in the [name, version, platform] format.

    # File lib/rubygems/name_tuple.rb, line 102
    def ==(other)
      case other
      when self.class
        @name == other.name &&
          @version == other.version &&
          @platform == other.platform
      when Array
        to_a == other
      else
        false
      end
    end

Also aliased as: eql?
eql?(other)
Alias for: ==
full_name() click to toggle source

Returns the full name (name-version) of this `Gem`. Platform information is included if it is not the default Ruby platform. This mimics the behavior of `Gem::Specification#full_name`.

    # File lib/rubygems/name_tuple.rb, line 49
    def full_name
      case @platform
      when nil, "ruby", ""
        "#{@name}-#{@version}"
      else
        "#{@name}-#{@version}-#{@platform}"
      end.dup.tap(&Gem::UNTAINT)
    end

hash() click to toggle source

    # File lib/rubygems/name_tuple.rb, line 117
    def hash
      to_a.hash
    end

match_platform?() click to toggle source

Indicate if this `NameTuple` matches the current platform.

    # File lib/rubygems/name_tuple.rb, line 61
    def match_platform?
      Gem::Platform.match_gem? @platform, @name
    end

prerelease?() click to toggle source

Indicate if this `NameTuple` is for a prerelease version.

    # File lib/rubygems/name_tuple.rb, line 67
    def prerelease?
      @version.prerelease?
    end

spec_name() click to toggle source

Return the name that the gemspec file would be

    # File lib/rubygems/name_tuple.rb, line 74
    def spec_name
      "#{full_name}.gemspec"
    end

to_a() click to toggle source

Convert back to the [name, version, platform] tuple

    # File lib/rubygems/name_tuple.rb, line 81
    def to_a
      [@name, @version, @platform]
    end