You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

30 lines
878 B
VimL

" Given some text, parse a semantic versioning string from the text
" into a triple of integeers [major, minor, patch].
"
" If no match can be performed, then an empty List will be returned instead.
function! ale#semver#Parse(text) abort
let l:match = matchlist(a:text, '^ *\(\d\+\)\.\(\d\+\)\.\(\d\+\)')
if empty(l:match)
return []
endif
return [l:match[1] + 0, l:match[2] + 0, l:match[3] + 0]
endfunction
" Given two triples of integers [major, minor, patch], compare the triples
" and return 1 if the lhs is greater than or equal to the rhs.
function! ale#semver#GreaterOrEqual(lhs, rhs) abort
if a:lhs[0] > a:rhs[0]
return 1
elseif a:lhs[0] == a:rhs[0]
if a:lhs[1] > a:rhs[1]
return 1
elseif a:lhs[1] == a:rhs[1]
return a:lhs[2] >= a:rhs[2]
endif
endif
return 0
endfunction