(zilch): document most exported symbols

Change-Id: I6a6a6964d3be7b8c6306a21d810c639f30253d38
This commit is contained in:
puck 2025-06-23 12:22:20 +00:00
parent 6a1efc6a92
commit a80266d9d8
13 changed files with 186 additions and 81 deletions

View file

@ -1,14 +1,18 @@
;; Procedures to deal with Semantic Versions.
(define-library (zilch semver)
(import
(scheme base)
(chicken base) (chicken format)
(srfi 152))
(export
<version>
make-version version-major version-minor version-patch version-prerelease version-build-metadata
version-str parse-version
version=? version<?)
(begin
;; A representation of a semantic version.
;; `prerelease` and `build-metadata` are lists.
(define-record-type <version>
(make-version major minor patch prerelease build-metadata)
version?
@ -17,7 +21,8 @@
(patch version-patch)
(prerelease version-prerelease)
(build-metadata version-build-metadata))
;; Returns a string representation of a `<version>`.
(define (version-str vers)
(define out (string-append
(number->string (version-major vers))
@ -34,6 +39,7 @@
(define-record-printer (<version> version out)
(fprintf out "#<version ~A>" (version-str version)))
;; Parses a string into a `<version>`.
(define (parse-version version-string)
(define version-string-length (string-length version-string))
(define separators '(#\. #\+ #\-))
@ -81,6 +87,7 @@
(make-version (string->number (list-ref version-parts 0)) (string->number (list-ref version-parts 1)) (string->number (list-ref version-parts 2)) prerelease-parts build-parts))
;; Returns whether `left` and `right` represent an identical version. This ignores the `build-metadata` part of the versions.
(define (version=? left right)
(when (not (version? left))
(set! left (parse-version left)))
@ -128,6 +135,8 @@
((string-lexicographical<? (car left) (car right)) #t)
((string=? (car left) (car right)) (compare-prerelease (cdr left) (cdr right)))
(else #f))))))
;; Returns whether `left` is an earlier version than `right`, ignoring `build-metadata`.
(define (version<? left right)
(when (not (version? left))
(set! left (parse-version left)))