Class: Serverspec::Type::Package::Version
- Inherits:
-
Object
- Object
- Serverspec::Type::Package::Version
- Includes:
- Comparable
- Defined in:
- lib/serverspec/type/package.rb
Instance Attribute Summary collapse
-
#epoch ⇒ Object
readonly
Returns the value of attribute epoch.
-
#version ⇒ Object
readonly
Returns the value of attribute version.
Instance Method Summary collapse
- #<=>(other) ⇒ Object
-
#initialize(val) ⇒ Version
constructor
A new instance of Version.
- #ver_array ⇒ Object
Constructor Details
#initialize(val) ⇒ Version
Returns a new instance of Version.
27 28 29 30 31 32 33 34 |
# File 'lib/serverspec/type/package.rb', line 27 def initialize(val) matches = val.match(/^(?:(\d+):)?(\d[0-9a-zA-Z.+:~_-]*)$/) if matches.nil? raise ArgumentError, "Malformed version number string #{val}" end @epoch = matches[1].to_i @version = matches[2].to_s end |
Instance Attribute Details
#epoch ⇒ Object (readonly)
Returns the value of attribute epoch.
25 26 27 |
# File 'lib/serverspec/type/package.rb', line 25 def epoch @epoch end |
#version ⇒ Object (readonly)
Returns the value of attribute version.
25 26 27 |
# File 'lib/serverspec/type/package.rb', line 25 def version @version end |
Instance Method Details
#<=>(other) ⇒ Object
36 37 38 39 40 41 42 |
# File 'lib/serverspec/type/package.rb', line 36 def <=>(other) other = Version.new(other) if other.is_a?(String) rv = @epoch <=> other.epoch return rv if rv != 0 self.ver_array <=> other.ver_array end |
#ver_array ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/serverspec/type/package.rb', line 44 def ver_array val = @version re = /^(?:(\d+)|(\D+))(.*)$/ res = [] until val.empty? matches = val.match(re) if matches[1].nil? # String matches[2].to_s.each_byte do |b| code_point = defined?("~".ord) ? "~".ord : ?~ res << ((b == code_point) ? -2 : b) end else # Digits res << matches[1].to_i end val = matches[3].to_s end res << -1 end |