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.



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

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.



27
28
29
# File 'lib/gemsmith/gem/requirement.rb', line 27

def operator
  @operator
end

#raw_versionObject (readonly)

Returns the value of attribute raw_version.



27
28
29
# File 'lib/gemsmith/gem/requirement.rb', line 27

def raw_version
  @raw_version
end

#versionObject (readonly)

Returns the value of attribute version.



27
28
29
# File 'lib/gemsmith/gem/requirement.rb', line 27

def version
  @version
end

#version_segmentsObject (readonly)

Returns the value of attribute version_segments.



27
28
29
# File 'lib/gemsmith/gem/requirement.rb', line 27

def version_segments
  @version_segments
end

Class Method Details

.for(object) ⇒ Object



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

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



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

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

.version_segments(version) ⇒ Object



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

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

Instance Method Details

#to_sObject



37
38
39
# File 'lib/gemsmith/gem/requirement.rb', line 37

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