X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scm%2Flily-library.scm;h=05875b2da2ec5915d7d4c99ae5c89489e9a13986;hb=b872748c6aa8bb721ced458691b38ac2fac5dfc8;hp=214c095cf2c720c0429cb8dfc6b753acc1304b77;hpb=75aa9281227dafb4b2c6e2f39b3fe5ed532e7007;p=lilypond.git diff --git a/scm/lily-library.scm b/scm/lily-library.scm index 214c095cf2..05875b2da2 100644 --- a/scm/lily-library.scm +++ b/scm/lily-library.scm @@ -778,9 +778,9 @@ as rectangular coordinates @code{(x-length . y-length)}." (define-public (remove-whitespace strg) "Remove characters satisfying @code{char-whitespace?} from string @var{strg}" - (string-delete - strg - char-whitespace?)) + (if (guile-v2) + (string-delete char-whitespace? strg) + (string-delete strg char-whitespace?))) (define-public (string-encode-integer i) (cond @@ -888,6 +888,29 @@ and will be applied to NUM." (fancy-format #f (car custom-format) num)) (else (fancy-format #f "~(~@r~)" num)))) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; lilypond version + +(define (lexicographic-list-compare? op a b) + "Lexicographically compare two lists @var{a} and @var{b} using + the operator @var{op}. The types of the list elements have to + be comparable with @var{op}. If the lists are of different length + the trailing elements of the longer list are ignored." + (let* ((ca (car a)) + (iseql (op ca ca))) + (let loop ((ca ca) (cb (car b)) (a (cdr a)) (b (cdr b))) + (let ((axb (op ca cb))) + (if (and (pair? a) (pair? b) + (eq? axb iseql (op cb ca))) + (loop (car a) (car b) (cdr a) (cdr b)) + axb))))) + +(define (ly:version? op ver) + "Using the operator @var{op} compare the currently executed LilyPond + version with a given version @var{ver} which is passed as a list of + numbers." + (lexicographic-list-compare? op (ly:version) ver)) + ;;;;;;;;;;;;;;;; ;; other