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.

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.



31
32
33
34
35
36
37
# File 'lib/gemsmith/gem/requirement.rb', line 31

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.



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

def operator
  @operator
end

#raw_versionObject (readonly)

Returns the value of attribute raw_version.



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

def raw_version
  @raw_version
end

#versionObject (readonly)

Returns the value of attribute version.



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

def version
  @version
end

#version_segmentsObject (readonly)

Returns the value of attribute version_segments.



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

def version_segments
  @version_segments
end

Class Method Details

.for(object) ⇒ Object



18
19
20
21
22
23
24
25
26
27
# File 'lib/gemsmith/gem/requirement.rb', line 18

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



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

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

.version_segments(version) ⇒ Object



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

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

Instance Method Details

#to_sObject



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

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