Class: GemMirror::VersionsFile
- Inherits:
-
Object
- Object
- GemMirror::VersionsFile
- Defined in:
- lib/gem_mirror/versions_file.rb
Overview
The VersionsFile class acts as a small Ruby wrapper around the RubyGems file that contains all Gems and their associated versions.
Instance Attribute Summary collapse
- #versions ⇒ Array readonly
- #versions_hash ⇒ Hash readonly
Class Method Summary collapse
-
.load(content) ⇒ GemMirror::VersionsFile
Reads the versions file from the specified String.
Instance Method Summary collapse
-
#create_versions_hash ⇒ Hash
Creates a Hash based on the Array containing all versions.
-
#initialize(versions) ⇒ VersionsFile
constructor
A new instance of VersionsFile.
-
#versions_for(gem) ⇒ Array
Returns an Array containing all the available versions for a Gem.
Constructor Details
#initialize(versions) ⇒ VersionsFile
Returns a new instance of VersionsFile.
35 36 37 38 |
# File 'lib/gem_mirror/versions_file.rb', line 35 def initialize(versions) @versions = versions @versions_hash = create_versions_hash end |
Instance Attribute Details
#versions ⇒ Array (readonly)
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/gem_mirror/versions_file.rb', line 13 class VersionsFile attr_reader :versions, :versions_hash ## # Reads the versions file from the specified String. # # @param [String] content # @return [GemMirror::VersionsFile] # def self.load(content) buffer = StringIO.new(content) reader = Zlib::GzipReader.new(buffer) instance = new(Marshal.load(reader.read)) reader.close instance end ## # @param [Array] versions # def initialize(versions) @versions = versions @versions_hash = create_versions_hash end ## # Creates a Hash based on the Array containing all versions. This Hash is # used to more easily (and faster) iterate over all the gems/versions. # # @return [Hash] # def create_versions_hash hash = Hash.new { |h, k| h[k] = [] } versions.each do |version| hash[version[0]] << version end hash end ## # Returns an Array containing all the available versions for a Gem. # # @param [String] gem # @return [Array] # def versions_for(gem) versions_hash[gem].map { |version| version[1] } end end |
#versions_hash ⇒ Hash (readonly)
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/gem_mirror/versions_file.rb', line 13 class VersionsFile attr_reader :versions, :versions_hash ## # Reads the versions file from the specified String. # # @param [String] content # @return [GemMirror::VersionsFile] # def self.load(content) buffer = StringIO.new(content) reader = Zlib::GzipReader.new(buffer) instance = new(Marshal.load(reader.read)) reader.close instance end ## # @param [Array] versions # def initialize(versions) @versions = versions @versions_hash = create_versions_hash end ## # Creates a Hash based on the Array containing all versions. This Hash is # used to more easily (and faster) iterate over all the gems/versions. # # @return [Hash] # def create_versions_hash hash = Hash.new { |h, k| h[k] = [] } versions.each do |version| hash[version[0]] << version end hash end ## # Returns an Array containing all the available versions for a Gem. # # @param [String] gem # @return [Array] # def versions_for(gem) versions_hash[gem].map { |version| version[1] } end end |
Class Method Details
.load(content) ⇒ GemMirror::VersionsFile
Reads the versions file from the specified String.
22 23 24 25 26 27 28 29 30 |
# File 'lib/gem_mirror/versions_file.rb', line 22 def self.load(content) buffer = StringIO.new(content) reader = Zlib::GzipReader.new(buffer) instance = new(Marshal.load(reader.read)) reader.close instance end |
Instance Method Details
#create_versions_hash ⇒ Hash
Creates a Hash based on the Array containing all versions. This Hash is used to more easily (and faster) iterate over all the gems/versions.
46 47 48 49 50 51 52 53 54 |
# File 'lib/gem_mirror/versions_file.rb', line 46 def create_versions_hash hash = Hash.new { |h, k| h[k] = [] } versions.each do |version| hash[version[0]] << version end hash end |
#versions_for(gem) ⇒ Array
Returns an Array containing all the available versions for a Gem.
62 63 64 |
# File 'lib/gem_mirror/versions_file.rb', line 62 def versions_for(gem) versions_hash[gem].map { |version| version[1] } end |