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)