class Outdated::RubyGems::Gem
Attributes
specs[R]
Public Class Methods
from_response(name, response)
click to toggle source
# File lib/outdated/ruby_gems/gem.rb, line 4 def self.from_response(name, response) return new if response.code == 404 body = response.body specs = JSON.parse(body).map { |spec| Outdated::RubyGems::Spec.from_response_object(name, spec) } new(specs) end
new(specs = [])
click to toggle source
# File lib/outdated/ruby_gems/gem.rb, line 14 def initialize(specs = []) @specs = specs raise ArgumentError, "conflicting spec names" unless specs.uniq(&:name).count < 2 end
Public Instance Methods
empty?()
click to toggle source
# File lib/outdated/ruby_gems/gem.rb, line 24 def empty? specs.empty? end
first()
click to toggle source
# File lib/outdated/ruby_gems/gem.rb, line 32 def first specs.first end
get(version)
click to toggle source
# File lib/outdated/ruby_gems/gem.rb, line 36 def get(version) specs.find { |spec| spec.version == version } end
name()
click to toggle source
# File lib/outdated/ruby_gems/gem.rb, line 20 def name specs.first.name end
recommend(currently_used_spec, cut_off)
click to toggle source
# File lib/outdated/ruby_gems/gem.rb, line 40 def recommend(currently_used_spec, cut_off) recommended_spec = specs.find do |spec| semver = spec.version.to_s.split(/\./).map(&:to_i) currently_used_semver = currently_used_spec.version.to_s.split(/\./).map(&:to_i) prerelease = spec.prerelease too_new = cut_off < spec.created_at minor_or_major_upgrade = semver[0] > currently_used_semver[0] || semver[1] > currently_used_semver[1] !prerelease && !too_new && !minor_or_major_upgrade end code = if recommended_spec.nil? Outdated::IMMATURE elsif recommended_spec > currently_used_spec Outdated::OUTDATED elsif recommended_spec < currently_used_spec Outdated::IMMATURE end [recommended_spec, code] end
size()
click to toggle source
# File lib/outdated/ruby_gems/gem.rb, line 28 def size specs.size end