Class: Gemsmith::Gem::Requirement

Inherits:
Object
  • Object
show all
Defined in:
lib/gemsmith/gem/requirement.rb

Overview

Defines a gem requirement. This is a partial, cleaner implementation of the RubyGems ‘Gem::Requirement` object. :reek:PrimaDonnaMethod

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(operator: ">=", raw_version: "0") ⇒ Requirement

Returns a new instance of Requirement.



32
33
34
35
36
37
38
# 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

Instance Attribute Details

#operatorObject (readonly)

Returns the value of attribute operator.



30
31
32
# File 'lib/gemsmith/gem/requirement.rb', line 30

def operator
  @operator
end

#raw_versionObject (readonly)

Returns the value of attribute raw_version.



30
31
32
# File 'lib/gemsmith/gem/requirement.rb', line 30

def raw_version
  @raw_version
end

#versionObject (readonly)

Returns the value of attribute version.



30
31
32
# File 'lib/gemsmith/gem/requirement.rb', line 30

def version
  @version
end

#version_segmentsObject (readonly)

Returns the value of attribute version_segments.



30
31
32
# File 'lib/gemsmith/gem/requirement.rb', line 30

def version_segments
  @version_segments
end

Class Method Details

.for(object) ⇒ Object



19
20
21
22
23
24
25
26
27
28
# 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

.operatorsObject



11
12
13
# File 'lib/gemsmith/gem/requirement.rb', line 11

def self.operators
  [">", ">=", "=", "!=", "<", "<=", "~>"]
end

.version_segments(version) ⇒ Object



15
16
17
# File 'lib/gemsmith/gem/requirement.rb', line 15

def self.version_segments version
  String(version).split(Versionaire::Version.delimiter).map(&:to_i)
end

Instance Method Details

#to_sObject



40
41
42
# File 'lib/gemsmith/gem/requirement.rb', line 40

def to_s
  "#{operator} #{version}"
end