class Raketeer::SemVer
Semantic Version
This is a non-strict version of Semantic Versioning v2.0.0.
@author Jonathan Bradley Whited @since 0.2.4 @see semver.org
Constants
- REGEX
- STRICT_REGEX
Attributes
build_meta[RW]
major[RW]
minor[RW]
patch[RW]
prerelease[RW]
version[RW]
Public Class Methods
new(major: nil,minor: nil,patch: nil,prerelease: nil,build_meta: nil)
click to toggle source
# File lib/raketeer/sem_ver.rb, line 33 def initialize(major: nil,minor: nil,patch: nil,prerelease: nil,build_meta: nil) @build_meta = build_meta @major = major @minor = minor @patch = patch @prerelease = prerelease @version = nil end
parse(str)
click to toggle source
# File lib/raketeer/sem_ver.rb, line 55 def self.parse(str) # Parsing backwards makes the logic easier build_meta = str.split('+',2) prerelease = build_meta[0].split('-',2) numbers = prerelease[0].split('.',3) sem_ver = SemVer.new sem_ver.major = numbers[0].to_i # There must always be a major version if numbers.length >= 2 minor = numbers[1].strip sem_ver.minor = minor.to_i unless minor.empty? if numbers.length == 3 patch = numbers[2].strip sem_ver.patch = patch.to_i unless patch.empty? end end if prerelease.length == 2 prerelease = prerelease[1].strip sem_ver.prerelease = prerelease unless prerelease.empty? end if build_meta.length == 2 build_meta = build_meta[1].strip sem_ver.build_meta = build_meta unless build_meta.empty? end return sem_ver end
parse_line(line,strict: false)
click to toggle source
# File lib/raketeer/sem_ver.rb, line 87 def self.parse_line(line,strict: false) str = line[regex(strict)] return nil if str.nil? || (str = str.strip).empty? return parse(str) end
regex(strict=false)
click to toggle source
# File lib/raketeer/sem_ver.rb, line 103 def self.regex(strict=false) return strict ? STRICT_REGEX : REGEX end
Public Instance Methods
empty?()
click to toggle source
# File lib/raketeer/sem_ver.rb, line 94 def empty? return @build_meta.nil? && @major.nil? && @minor.nil? && @patch.nil? && @prerelease.nil? && @version.nil? end
initialize_copy(orig)
click to toggle source
Calls superclass method
# File lib/raketeer/sem_ver.rb, line 42 def initialize_copy(orig) super(orig) copy = caller[0].to_s.include?('clone') ? :clone : :dup @build_meta = @build_meta.__send__(copy) @major = @major.__send__(copy) @minor = @minor.__send__(copy) @patch = @patch.__send__(copy) @prerelease = @prerelease.__send__(copy) @version = @version.__send__(copy) end
to_s()
click to toggle source
# File lib/raketeer/sem_ver.rb, line 107 def to_s s = ''.dup if !@version.nil? s << @version.to_s elsif !@major.nil? s << @major.to_s s << ".#{@minor}" unless @minor.nil? s << ".#{@patch}" unless @patch.nil? s << "-#{@prerelease}" unless @prerelease.nil? s << "+#{@build_meta}" unless @build_meta.nil? end return s end