;;;; semantic-version.element.scm -*- Scheme -*- ;;;; Kon Lovett, Apr '21 ;; Issues ;; ;; - Use symbol as ident impl, not string ;; ;; - Support Roman Numerals & Upper/Lowercase Letters ("outline numbers"). ;; ;; - Use interleaved elm chr in single sequence ;; ;; - Use vector (module semantic-version.element (;export version version-copy version-depth version-elements version-separators) (import scheme utf8 (chicken base) (chicken type) (only (srfi 1) make-list list-copy every) (semantic-version core)) ;; ;NOTE symbols are not preserved; the printname is used! (include-relative "semantic-version.types") (: version (#!rest ver-part --> ver)) (: version-copy (ver --> ver)) (: version-depth (ver --> integer)) (: version-elements (ver --> ver-parts)) (: version-separators (ver --> ver-puncs)) ;; (include-relative "semantic-version-internals") ;; (define (version . parts) (if (null? (check-parts 'version parts)) (make-ver '() '()) (let ((parts (map canon-list-elm parts))) (make-ver parts (default-puncs parts))) ) ) (define (version-copy ver) (copy-ver (check-version 'version-copy ver)) ) (define (version-depth ver) (length (ver-parts (check-version 'version-depth ver))) ) (define (version-elements ver) (list-copy (ver-parts (check-version 'version-elements ver))) ) (define (version-separators ver) (list-copy (ver-puncs (check-version 'version-separators ver))) ) ) ;module semantic-version.element