Class: SemanticVersionSegment

Inherits:
Object
  • Object
show all
Defined in:
lib/semver_dialects/semantic_version/semantic_version.rb

Constant Summary collapse

@@group_suffixes =
{
  # pre-releases
  "PRE" => -16,
  "PREVIEW" => -16,
  "DEV" => -15,
  "A" => -14,
  "ALPHA" => -13,
  "B" => -12,
  "BETA" => -12,
  "RC" => -11,
  "M" => -10,
   "RELEASE" => 0,
  "FINAL" => 0,
  # PHP specific
  "STABLE" => 0,
   # post-releases
  "SP" => 1,
}

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(group_string) ⇒ SemanticVersionSegment

Returns a new instance of SemanticVersionSegment.



229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
# File 'lib/semver_dialects/semantic_version/semantic_version.rb', line 229

def initialize(group_string)
  @is_post_release = false
  @is_pre_release = false

  @version_string = group_string
  @original_group_string = group_string
  # use x as unique placeholder
  group_string_ucase = group_string.to_s.gsub(/\*/, "x").upcase

  if @@group_suffixes.key?(group_string_ucase)
    value = @@group_suffixes[group_string_ucase]
    @is_post_release = value > 0
    @is_pre_release = value < 0
    @normalized_group_string = @@group_suffixes[group_string_ucase].to_s
  else
    @normalized_group_string = group_string_ucase
  end
end

Instance Attribute Details

#is_post_releaseObject

Returns the value of attribute is_post_release.



206
207
208
# File 'lib/semver_dialects/semantic_version/semantic_version.rb', line 206

def is_post_release
  @is_post_release
end

#is_pre_releaseObject

Returns the value of attribute is_pre_release.



206
207
208
# File 'lib/semver_dialects/semantic_version/semantic_version.rb', line 206

def is_pre_release
  @is_pre_release
end

#normalized_group_stringObject

Returns the value of attribute normalized_group_string.



206
207
208
# File 'lib/semver_dialects/semantic_version/semantic_version.rb', line 206

def normalized_group_string
  @normalized_group_string
end

#original_group_stringObject

Returns the value of attribute original_group_string.



206
207
208
# File 'lib/semver_dialects/semantic_version/semantic_version.rb', line 206

def original_group_string
  @original_group_string
end

Instance Method Details

#!=(other_semver) ⇒ Object



292
293
294
# File 'lib/semver_dialects/semantic_version/semantic_version.rb', line 292

def !=(other_semver)
  return !(self == other_semver)
end

#<(other_semver) ⇒ Object



272
273
274
# File 'lib/semver_dialects/semantic_version/semantic_version.rb', line 272

def <(other_semver)
  compare(self.normalized_group_string, other_semver.normalized_group_string, true, false, :<)
end

#<=(other_semver) ⇒ Object



284
285
286
# File 'lib/semver_dialects/semantic_version/semantic_version.rb', line 284

def <=(other_semver)
  self == other_semver || compare(self.normalized_group_string, other_semver.normalized_group_string, true, false, :<)
end

#==(other_semver) ⇒ Object



288
289
290
# File 'lib/semver_dialects/semantic_version/semantic_version.rb', line 288

def ==(other_semver)
  self.normalized_group_string == other_semver.normalized_group_string
end

#>(other_semver) ⇒ Object



276
277
278
# File 'lib/semver_dialects/semantic_version/semantic_version.rb', line 276

def >(other_semver)
  compare(self.normalized_group_string, other_semver.normalized_group_string, false, true, :>)
end

#>=(other_semver) ⇒ Object



280
281
282
# File 'lib/semver_dialects/semantic_version/semantic_version.rb', line 280

def >=(other_semver)
  self == other_semver || compare(self.normalized_group_string, other_semver.normalized_group_string, false, true, :>)
end

#compare(semver_a, semver_b, ret_anr_bnonr, ret_anonr_bnr, comparator) ⇒ Object



248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
# File 'lib/semver_dialects/semantic_version/semantic_version.rb', line 248

def compare(semver_a, semver_b, ret_anr_bnonr, ret_anonr_bnr, comparator)
  if semver_a.number? && semver_b.number?
    semver_a.to_i.send(comparator, semver_b.to_i)
  elsif semver_a.number? && !semver_b.number?
    if semver_b == "X"
      true
    else
      ret_anr_bnonr
    end
  elsif !semver_a.number? && semver_b.number?
    if semver_a == "X"
      true
    else
      ret_anonr_bnr
    end
  else # !semantic_version_b.group_string.is_number? && !semantic_version_agrous_string.is_number?
    if semver_a == "X" || semver_b == "X"
      true
    else
      semver_a.send(comparator, semver_b)
    end
  end
end

#diff(other_semver, abs = true) ⇒ Object



312
313
314
315
316
317
318
319
320
321
322
# File 'lib/semver_dialects/semantic_version/semantic_version.rb', line 312

def diff(other_semver, abs = true)

  if other_semver.normalized_group_string == "X" || self.normalized_group_string == "X"
    "0"
  elsif self.normalized_group_string.number? && other_semver.normalized_group_string.number?
    ret = self.normalized_group_string.to_i - other_semver.normalized_group_string.to_i
    (abs && ret < 0) ? -ret : ret
  else
    nil
  end
end

#is_number?Boolean

Returns:

  • (Boolean)


304
305
306
# File 'lib/semver_dialects/semantic_version/semantic_version.rb', line 304

def is_number?
  self.normalized_group_string.number?
end

#is_zero?Boolean

Returns:

  • (Boolean)


308
309
310
# File 'lib/semver_dialects/semantic_version/semantic_version.rb', line 308

def is_zero?
  is_number? ? self.normalized_group_string.to_i == 0 : false
end

#to_normalized_sObject



296
297
298
# File 'lib/semver_dialects/semantic_version/semantic_version.rb', line 296

def to_normalized_s
  @normalized_group_string
end

#to_sObject



300
301
302
# File 'lib/semver_dialects/semantic_version/semantic_version.rb', line 300

def to_s
  @version_string
end