Class: Gemirro::GemVersionCollection
- Inherits:
-
Object
- Object
- Gemirro::GemVersionCollection
- Includes:
- Enumerable
- Defined in:
- lib/gemirro/gem_version_collection.rb
Overview
The VersionCollection class contains a collection of ::Gem::Version
Instance Attribute Summary collapse
- #gems ⇒ Array readonly
- #grouped ⇒ Array readonly
Instance Method Summary collapse
-
#by_name(&block) ⇒ Array
Group gems by name.
-
#each(&block) ⇒ Object
Each method.
-
#find_by_name(gemname) ⇒ Array
Find gem by name.
-
#initialize(gems = []) ⇒ GemVersionCollection
constructor
A new instance of GemVersionCollection.
-
#newest ⇒ GemVersion
Return newest version of a gem.
-
#oldest ⇒ GemVersion
Return oldest version of a gem.
-
#size ⇒ Integer
Return size of a gem.
Constructor Details
#initialize(gems = []) ⇒ GemVersionCollection
Returns a new instance of GemVersionCollection.
19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/gemirro/gem_version_collection.rb', line 19 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 |
Instance Attribute Details
#gems ⇒ Array (readonly)
10 11 12 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 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
# File 'lib/gemirro/gem_version_collection.rb', line 10 class GemVersionCollection include Enumerable attr_reader :gems attr_reader :grouped ## # @param [Array] gems # 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 ## # Return oldest version of a gem # # @return [GemVersion] # def oldest @gems.first end ## # Return newest version of a gem # # @return [GemVersion] # def newest @gems.last end ## # Return size of a gem # # @return [Integer] # def size @gems.size end ## # Each method # def each(&block) @gems.each(&block) end ## # Group gems by name # # @param [Proc] block # @return [Array] # 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 ## # Find gem by name # # @param [String] gemname # @return [Array] # def find_by_name(gemname) gem = by_name.select do |name, _collection| name == gemname end gem.first.last if gem.any? end end |
#grouped ⇒ Array (readonly)
10 11 12 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 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
# File 'lib/gemirro/gem_version_collection.rb', line 10 class GemVersionCollection include Enumerable attr_reader :gems attr_reader :grouped ## # @param [Array] gems # 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 ## # Return oldest version of a gem # # @return [GemVersion] # def oldest @gems.first end ## # Return newest version of a gem # # @return [GemVersion] # def newest @gems.last end ## # Return size of a gem # # @return [Integer] # def size @gems.size end ## # Each method # def each(&block) @gems.each(&block) end ## # Group gems by name # # @param [Proc] block # @return [Array] # 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 ## # Find gem by name # # @param [String] gemname # @return [Array] # def find_by_name(gemname) gem = by_name.select do |name, _collection| name == gemname end gem.first.last if gem.any? end end |
Instance Method Details
#by_name(&block) ⇒ Array
Group gems by name
71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/gemirro/gem_version_collection.rb', line 71 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) ⇒ Object
Each method
61 62 63 |
# File 'lib/gemirro/gem_version_collection.rb', line 61 def each(&block) @gems.each(&block) end |
#find_by_name(gemname) ⇒ Array
Find gem by name
99 100 101 102 103 104 105 |
# File 'lib/gemirro/gem_version_collection.rb', line 99 def find_by_name(gemname) gem = by_name.select do |name, _collection| name == gemname end gem.first.last if gem.any? end |
#newest ⇒ GemVersion
Return newest version of a gem
45 46 47 |
# File 'lib/gemirro/gem_version_collection.rb', line 45 def newest @gems.last end |
#oldest ⇒ GemVersion
Return oldest version of a gem
36 37 38 |
# File 'lib/gemirro/gem_version_collection.rb', line 36 def oldest @gems.first end |
#size ⇒ Integer
Return size of a gem
54 55 56 |
# File 'lib/gemirro/gem_version_collection.rb', line 54 def size @gems.size end |