Class: SemverStringer::Semver

Inherits:
Object
  • Object
show all
Includes:
Comparable
Defined in:
lib/semver_stringer/semver.rb

Defined Under Namespace

Classes: Substring

Instance Method Summary collapse

Constructor Details

#initialize(params = {}) ⇒ Semver

Creates a new Semver instance.

Parameters:

  • params (Hash) (defaults to: {})

    the options to create a message with.

Options Hash (params):

  • :major (Integer)

    Major version number

  • :minor (Integer)

    Minor version number

  • :patch (Integer)

    Patch version number

  • :pre (String, Integer, Array<String, Integer>)

    Pre-release identifier(s)

  • :build (String, Integer, Array<String, Integer>)

    Build number identifier(s)



63
64
65
66
67
# File 'lib/semver_stringer/semver.rb', line 63

def initialize(params={})
  @major, @minor, @patch = get_version_numbers_from params
  @build = get_build_string_from params
  @pre = get_pre_string_from params
end

Instance Method Details

#<=>(other) ⇒ Object

All the semver.org comparison rules are expressed by this operator



71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# File 'lib/semver_stringer/semver.rb', line 71

def <=>(other) 

  versionComparison = Substring.new(get_version_string) <=> Substring.new(other.get_version_string)
  (return versionComparison) if versionComparison != 0

  other_pre = other.instance_variable_get('@pre')
  if @pre != nil and other_pre == nil
    return -1
  elsif @pre == nil and other_pre != nil
    return 1
  elsif @pre != nil and other_pre != nil
    pre_comparison = Substring.new(@pre) <=> Substring.new(other_pre)
    (return pre_comparison) if pre_comparison != 0
  end

  other_build = other.instance_variable_get('@build')
  if @build == nil and other_build != nil
    return -1
  elsif @build != nil and other_build == nil
    return 1
  elsif @build != nil and other_build != nil
    build_comparison = Substring.new(@build) <=> Substring.new(other_build)
    (return build_comparison) if build_comparison != 0
  end

  return 0
end

#get_build_stringObject



107
108
109
# File 'lib/semver_stringer/semver.rb', line 107

def get_build_string
  @build
end

#get_pre_stringObject



103
104
105
# File 'lib/semver_stringer/semver.rb', line 103

def get_pre_string
  @pre
end

#get_version_stringObject



99
100
101
# File 'lib/semver_stringer/semver.rb', line 99

def get_version_string
  "#{@major}.#{@minor}.#{@patch}"
end

#to_sString

Returns a string representation of the SemVer

Examples:

SemverStringer::Semver.new(:major=>2, :pre=>"alpha").to_s  #=> "2.0.0-alpha"

Returns:

  • (String)


117
118
119
120
121
122
# File 'lib/semver_stringer/semver.rb', line 117

def to_s
  version = get_version_string
  version << "-#{get_pre_string}" unless @pre == nil
  version << "+#{get_build_string}" unless @build == nil
  version
end