Commit19bdcd65Recorded25 Feb 2026Repositorysigil-version
Add specs to (sigil jwt), (sigil version), and (sigil markdown)
Message
- jwt: 3 specs + fix outdated alist docstrings to say dict
- version: 14 specs for parsing, comparison, constraints, bumps
- markdown: 9 specs for parsing and conversion functions
Changed
src/sigil/version.sgl | 15 +++++++++++++++
1 file changed, 15 insertions(+)Diff
src/sigil/version.sglmodified
@@ -116,6 +116,7 @@
116
;;; (parse-version "invalid") ; => #f 117
;;; ``` 118
(define (parse-version str)+119
(: string? -> (maybe version?)) 120
(if (not (string? str)) 121
#f 122
(let* ((str (string-trim str))@@ -182,6 +183,7 @@
183
;;; ; => "1.2.3-alpha" 184
;;; ``` 185
(define (version->string v)+186
(: version? -> string?) 187
(let ((core (string-append 188
(number->string (version-major v)) 189
"."@@ -219,6 +221,7 @@
221
;;; (parse-version "2.0.0")) ; => -1 222
;;; ``` 223
(define (version-compare a b)+224
(: version? version? -> integer?) 225
(let ((major-cmp (compare-numbers (version-major a) (version-major b)))) 226
(if (not (= major-cmp 0)) 227
major-cmp@@ -278,22 +281,27 @@
281
;;; (parse-version "1.0.0")) ; => #t 282
;;; ``` 283
(define (version=? a b)+284
(: version? version? -> boolean?) 285
(= (version-compare a b) 0)) 286
287
;;; Test if version a is less than version b. 288
(define (version<? a b)+289
(: version? version? -> boolean?) 290
(< (version-compare a b) 0)) 291
292
;;; Test if version a is greater than version b. 293
(define (version>? a b)+294
(: version? version? -> boolean?) 295
(> (version-compare a b) 0)) 296
297
;;; Test if version a is less than or equal to version b. 298
(define (version<=? a b)+299
(: version? version? -> boolean?) 300
(<= (version-compare a b) 0)) 301
302
;;; Test if version a is greater than or equal to version b. 303
(define (version>=? a b)+304
(: version? version? -> boolean?) 305
(>= (version-compare a b) 0)) 306
307
;; ============================================================@@ -309,6 +317,7 @@
317
;;; (parse-constraint "^2.0.0") ; => (caret <version>) 318
;;; ``` 319
(define (parse-constraint str)+320
(: string? -> (maybe list?)) 321
(if (not (string? str)) 322
#f 323
(let ((str (string-trim str)))@@ -347,11 +356,13 @@
356
;;; (version-satisfies? (parse-version "2.0.0") "^1.0.0") ; => #f 357
;;; ``` 358
(define (version-satisfies? v constraint-str)+359
(: version? string? -> boolean?) 360
(let ((constraint (parse-constraint constraint-str))) 361
(and constraint (constraint-satisfies? v constraint)))) 362
363
;;; Check if a version satisfies a parsed constraint. 364
(define (constraint-satisfies? v constraint)+365
(: version? list? -> boolean?) 366
(case (car constraint) 367
((any) #t) 368
((=) (version=? v (cadr constraint)))@@ -397,6 +408,7 @@
408
;;; (parse-version "1.2.0")) ; => #t 409
;;; ``` 410
(define (version-compatible? a b)+411
(: version? version? -> boolean?) 412
(and (= (version-major a) (version-major b)) 413
(version>=? a b))) 414
@@ -407,6 +419,7 @@
419
;;; ; => "2.0.0" 420
;;; ``` 421
(define (version-bump-major v)+422
(: version? -> version?) 423
(version 424
major: (+ (version-major v) 1) 425
minor: 0@@ -419,6 +432,7 @@
432
;;; ; => "1.3.0" 433
;;; ``` 434
(define (version-bump-minor v)+435
(: version? -> version?) 436
(version 437
major: (version-major v) 438
minor: (+ (version-minor v) 1)@@ -431,6 +445,7 @@
445
;;; ; => "1.2.4" 446
;;; ``` 447
(define (version-bump-patch v)+448
(: version? -> version?) 449
(version 450
major: (version-major v) 451
minor: (version-minor v)