12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
# File 'lib/doing/changelog/version.rb', line 12
def version_to_a(string)
raise 'Version not a string' unless string.is_a?(String)
v = string.match(/(?<maj>\d+)(?:\.(?<min>[\d*?]+))?(?:\.(?<patch>[\d*?]+))?/)
raise 'Error parsing semantic version string' if v.nil?
maj = v['maj'].to_i
min = case v['min']
when /[*?]/
v['min'].sub(/(\d+)?[^\d]/, '\1\d+')
when /^[0-9]+$/
v['min'].to_i
end
pat = case v['patch']
when /[*?]/
v['patch'].sub(/(\d+)?[^\d]/, '\1\d+')
when /^[0-9]+$/
v['patch'].to_i
end
[maj, min, pat]
end
|