Method: NuGetVersions::NuGetVersion.try_parse

Defined in:
lib/nuget_versions/nuget_version.rb

.try_parse(value) ⇒ Object



89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
# 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)

   = (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  && !SemanticVersion.try_validate_identifier()

  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, )
  ver.instance_variable_set("@original_version", original_value)
  ver.instance_variable_set("@original_release", ver.release)

  ver
end