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)
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
|