Class: Geoptima::Version

Inherits:
Object
  • Object
show all
Defined in:
lib/geoptima/version.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(text) ⇒ Version

Returns a new instance of Version.



7
8
9
10
# File 'lib/geoptima/version.rb', line 7

def initialize(text)
  @comparator,@version = clean_version(text)
  @major,@minor,@patch=@version.split(/\./)
end

Instance Attribute Details

#comparatorObject (readonly)

Returns the value of attribute comparator.



6
7
8
# File 'lib/geoptima/version.rb', line 6

def comparator
  @comparator
end

#majorObject (readonly)

Returns the value of attribute major.



6
7
8
# File 'lib/geoptima/version.rb', line 6

def major
  @major
end

#minorObject (readonly)

Returns the value of attribute minor.



6
7
8
# File 'lib/geoptima/version.rb', line 6

def minor
  @minor
end

#patchObject (readonly)

Returns the value of attribute patch.



6
7
8
# File 'lib/geoptima/version.rb', line 6

def patch
  @patch
end

#versionObject (readonly)

Returns the value of attribute version.



6
7
8
# File 'lib/geoptima/version.rb', line 6

def version
  @version
end

Instance Method Details

#as_geoptima_versionObject



33
34
35
# File 'lib/geoptima/version.rb', line 33

def as_geoptima_version
  self
end

#clean_version(version) ⇒ Object



11
12
13
14
15
16
17
18
# File 'lib/geoptima/version.rb', line 11

def clean_version(version)
  comparator,cleaned = "==", version
  if version =~ /^([\>\<\=]+)(\d+\.\d+\.\d+)/
    comparator = $1[0..2]
    cleaned = $2
  end
  [comparator,cleaned]
end

#compare(other) ⇒ Object



36
37
38
39
# File 'lib/geoptima/version.rb', line 36

def compare(other)
  ogv = other.as_geoptima_version
  self.to_i.send(ogv.comparator, ogv.to_i)
end

#diff(other) ⇒ Object



40
41
42
# File 'lib/geoptima/version.rb', line 40

def diff(other)
  other.as_geoptima_version.to_i - self.to_i
end

#to_iObject



19
20
21
22
23
24
25
26
27
28
29
# File 'lib/geoptima/version.rb', line 19

def to_i
  unless @version_int
    base = 1
    @version_int = version.split(/\./).reverse.inject(0) do |acc,v|
      acc += base * v.to_i
      base *= 100
      acc
    end
  end
  @version_int
end

#to_sObject



30
31
32
# File 'lib/geoptima/version.rb', line 30

def to_s
  version
end