(zilch): document most exported symbols
Change-Id: I6a6a6964d3be7b8c6306a21d810c639f30253d38
This commit is contained in:
parent
6a1efc6a92
commit
a80266d9d8
13 changed files with 186 additions and 81 deletions
|
|
@ -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)))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue