class NuGetVersions::NuGetVersion

Attributes

revision[R]

Public Class Methods

copy_of(version) click to toggle source

Creates a NuGetVersion from an existing NuGetVersion Parameters:

  • version: Version to clone.

# File lib/nuget_versions/nuget_version.rb, line 6
def self.copy_of(version)
  revision = 0
  revision = version.revision if version.respond_to? :revision

  return NuGetVersion.new(version.major, version.minor, version.patch, revision, version.release_labels, version.metadata)
end
new(major, minor, patch, revision = 0, release_labels = nil, metadata = nil) click to toggle source

Creates a NuGetVersion X.Y.Z, X.Y.Z-alpha, X.Y.Z-alpha+metadata, W.X.Y.Z, W.X.Y.Z-alpha, W.X.Y.Z-alpha+metadata. Parameters:

  • major: W.x.y.z

  • minor: w.X.y.z

  • patch: w.x.Y.z

  • revision: w.x.y.Z

  • release_labels: Prerelease label

  • metadata: Build metadata

Calls superclass method
# File lib/nuget_versions/nuget_version.rb, line 21
def initialize(major, minor, patch, revision = 0, release_labels = nil, metadata = nil)
  super(major, minor, patch, release_labels, metadata)

  @revision = Integer(revision, revision.is_a?(String) ? 10 : 0)
end
parse(value) click to toggle source
# File lib/nuget_versions/nuget_version.rb, line 82
def self.parse(value)
  ver = self.try_parse(value)
  raise "Invalid NuGet version value" if ver.nil?

  ver
end
try_parse(value) click to toggle source
# File lib/nuget_versions/nuget_version.rb, line 89
def self.try_parse(value)
  return nil if value.nil?

  value = value.to_s if !value.is_a? String
  original_value = value

  return nil if value.empty?

  value = value.split("+", 2)

  metadata = (value.length == 2) ? value.last : nil

  value = value.first.split("-", 2)

  return nil if value.empty?

  release_labels = (value.length == 2) ? value.last.split('.') : nil

  parts = value.first.split(".")

  return nil if parts.length < 2 || parts.length > 4
  return nil if release_labels && !SemanticVersion.try_validate_identifiers(release_labels)
  return nil if metadata && !SemanticVersion.try_validate_identifier(metadata)

  begin
    major = Integer(parts[0], 10)
    minor = (parts.length >= 2) ? Integer(parts[1], 10) : 0
    patch = (parts.length >= 3) ? Integer(parts[2], 10) : 0
    revision = (parts.length >= 4) ? Integer(parts[3], 10) : 0
  rescue
    return nil
  end

  ver = NuGetVersion.new(major, minor, patch, revision, release_labels, metadata)
  ver.instance_variable_set("@original_version", original_value)
  ver.instance_variable_set("@original_release", ver.release)

  ver
end

Public Instance Methods

major=(new_value) click to toggle source
Calls superclass method
# File lib/nuget_versions/nuget_version.rb, line 29
def major=(new_value)
  super(new_value)
  @original_version = nil
end
metadata=(new_value) click to toggle source
Calls superclass method
# File lib/nuget_versions/nuget_version.rb, line 54
def metadata=(new_value)
  super(new_value)
  @original_version = nil
end
minor=(new_value) click to toggle source
Calls superclass method
# File lib/nuget_versions/nuget_version.rb, line 34
def minor=(new_value)
  super(new_value)
  @original_version = nil
end
original_version() click to toggle source
# File lib/nuget_versions/nuget_version.rb, line 64
def original_version
  @original_version = nil if !@original_version.nil? && (release != @original_release)
  @original_version
end
patch=(new_value) click to toggle source
Calls superclass method
# File lib/nuget_versions/nuget_version.rb, line 39
def patch=(new_value)
  super(new_value)
  @original_version = nil
end
release=(new_value) click to toggle source
Calls superclass method
# File lib/nuget_versions/nuget_version.rb, line 59
def release=(new_value)
  super(new_value)
  @original_version = nil
end
release_labels=(new_value) click to toggle source
Calls superclass method
# File lib/nuget_versions/nuget_version.rb, line 49
def release_labels=(new_value)
  super(new_value)
  @original_version = nil
end
revision=(new_value) click to toggle source
# File lib/nuget_versions/nuget_version.rb, line 44
def revision=(new_value)
  @revision = Integer(new_value, new_value.is_a?(String) ? 10 : 0)
  @original_version = nil
end
to_s() click to toggle source
# File lib/nuget_versions/nuget_version.rb, line 69
def to_s
  original_version # Test if the release labels array has been mutated

  return @original_version if !@original_version.nil? && !@original_version.empty?

  version = "#{@major}.#{@minor}.#{@patch}"
  version += ".#{@revision}" if revision != 0
  version += "-#{release}" if is_prerelease?
  version += "+#{metadata}" if has_metadata?

  version
end