class Gemsmith::Gem::Requirement
Defines a gem requirement. This is a partial, cleaner implementation of the RubyGems `Gem::Requirement` object. :reek: MissingSafeMethod
Attributes
operator[R]
raw_version[R]
version[R]
version_segments[R]
Public Class Methods
for(object)
click to toggle source
# File lib/gemsmith/gem/requirement.rb, line 19 def self.for object case object when String operator, version = object.split new operator: operator, raw_version: version else fail Errors::RequirementConversion, %(Invalid string conversion. Use: "<operator> <version>".) end end
new(operator: ">=", raw_version: "0")
click to toggle source
# File lib/gemsmith/gem/requirement.rb, line 32 def initialize operator: ">=", raw_version: "0" @operator = operator @raw_version = raw_version @version_segments = self.class.version_segments raw_version @version = Versionaire::Version version_segments validate! end
operators()
click to toggle source
# File lib/gemsmith/gem/requirement.rb, line 11 def self.operators [">", ">=", "=", "!=", "<", "<=", "~>"] end
version_segments(version)
click to toggle source
# File lib/gemsmith/gem/requirement.rb, line 15 def self.version_segments version String(version).split(Versionaire::Version.delimiter).map(&:to_i) end
Public Instance Methods
to_s()
click to toggle source
# File lib/gemsmith/gem/requirement.rb, line 40 def to_s "#{operator} #{version}" end
Private Instance Methods
validate!()
click to toggle source
# File lib/gemsmith/gem/requirement.rb, line 46 def validate! operators = self.class.operators return true if operators.include? operator fail Errors::RequirementOperator, %(Invalid gem requirement operator. Use: #{operators.join ", "}.) end