@@ -200,10 +200,29 @@ function M.parse_requirements(str)
200
200
return requirements
201
201
end
202
202
203
- --- @param version string
204
- --- @param req string
203
+ -- TODO: port https://github.com/dtolnay/semver/blob/master/src%2Fimpls.rs#L51-L107
204
+ --- @param version ? string
205
+ --- @param req ? string
205
206
--- @return integer
206
- local function compare_pre (version , req )
207
+ function M .compare_pre (version , req )
208
+ if version and req then
209
+ if version < req then
210
+ return - 1
211
+ elseif version == req then
212
+ return 0
213
+ elseif version > req then
214
+ return 1
215
+ end
216
+ end
217
+
218
+ return (req and 1 or 0 ) - (version and 1 or 0 )
219
+ end
220
+
221
+ -- TODO: port https://github.com/dtolnay/semver/blob/master/src/impls.rs#L109-L153
222
+ --- @param version ? string
223
+ --- @param req ? string
224
+ --- @return integer
225
+ function M .compare_meta (version , req )
207
226
if version and req then
208
227
if version < req then
209
228
return - 1
@@ -231,7 +250,7 @@ local function matches_less(version, req)
231
250
return version .patch < req .patch
232
251
end
233
252
234
- return compare_pre (version .pre , req .pre ) < 0
253
+ return M . compare_pre (version .pre , req .pre ) < 0
235
254
end
236
255
237
256
--- @param version SemVer
@@ -248,7 +267,7 @@ local function matches_greater(version, req)
248
267
return version .patch > req .patch
249
268
end
250
269
251
- return compare_pre (version .pre , req .pre ) > 0
270
+ return M . compare_pre (version .pre , req .pre ) > 0
252
271
end
253
272
254
273
--- @param version SemVer
@@ -304,7 +323,7 @@ local function matches_caret(version, req)
304
323
return false
305
324
end
306
325
307
- return compare_pre (version .pre , req .pre ) >= 0
326
+ return M . compare_pre (version .pre , req .pre ) >= 0
308
327
end
309
328
310
329
--- @param version SemVer
@@ -321,7 +340,7 @@ local function matches_tilde(version, req)
321
340
return version .patch > req .patch
322
341
end
323
342
324
- return compare_pre (version .pre , req .pre ) >= 0
343
+ return M . compare_pre (version .pre , req .pre ) >= 0
325
344
end
326
345
327
346
--- @param v SemVer
0 commit comments