]> git.donarmstrong.com Git - lilypond.git/blobdiff - scm/lily-library.scm
Fix Emmentaler-Brace loading with SVG backend.
[lilypond.git] / scm / lily-library.scm
index 572972169f0d45687a4e7b0c03e50259a4be3a85..5464d93767bc2935f703251a84397b7b78b4a9fe 100644 (file)
@@ -1,10 +1,20 @@
+;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; lily-library.scm -- utilities
+;;;; Copyright (C) 1998--2010 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;
-;;;;  source file of the GNU LilyPond music typesetter
+;;;; LilyPond is free software: you can redistribute it and/or modify
+;;;; it under the terms of the GNU General Public License as published by
+;;;; the Free Software Foundation, either version 3 of the License, or
+;;;; (at your option) any later version.
 ;;;;
-;;;; (c) 1998--2009 Jan Nieuwenhuizen <janneke@gnu.org>
-;;;; Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; LilyPond is distributed in the hope that it will be useful,
+;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;;; GNU General Public License for more details.
+;;;;
+;;;; You should have received a copy of the GNU General Public License
+;;;; along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
 
 ; for take, drop, take-while, list-index, and find-tail:
 (use-modules (srfi srfi-1))
   (ly:make-score music))
 
 
-(define (get-outfile-name parser base)
-  (let* ((output-suffix (ly:parser-lookup parser 'output-suffix))
+(define (get-current-filename parser)
+  "return any suffix value for output filename allowing for settings by
+calls to bookOutputName function"
+  (let ((book-filename (ly:parser-lookup parser 'book-filename)))
+    (if (not book-filename)
+       (ly:parser-output-name parser)
+       book-filename)))
+
+(define (get-current-suffix parser)
+  "return any suffix value for output filename allowing for settings by calls to
+bookoutput function"
+  (let ((book-output-suffix (ly:parser-lookup parser 'book-output-suffix)))
+    (if (not (string? book-output-suffix))
+       (ly:parser-lookup parser 'output-suffix)
+       book-output-suffix)))
+
+(define-public current-outfile-name #f)  ; for use by regression tests
+
+(define (get-outfile-name parser)
+  "return current filename for generating backend output files"
+  ;; user can now override the base file name, so we have to use
+  ;; the file-name concatenated with any potential output-suffix value
+  ;; as the key to out internal a-list
+  (let* ((base-name (get-current-filename parser))
+        (output-suffix (get-current-suffix parser))
+        (alist-key (format "~a~a" base-name output-suffix))
         (counter-alist (ly:parser-lookup parser 'counter-alist))
-        (output-count (assoc-get output-suffix counter-alist 0))
-        (result base))
+        (output-count (assoc-get alist-key counter-alist 0))
+        (result base-name))
     ;; Allow all ASCII alphanumerics, including accents
     (if (string? output-suffix)
-       (set! result (format "~a-~a"
-                            base (string-regexp-substitute
-                                   "[^-[:alnum:]]" "_" output-suffix))))
+        (set! result
+              (format "~a-~a"
+                      result
+                      (string-regexp-substitute
+                       "[^-[:alnum:]]"
+                       "_"
+                       output-suffix))))
 
     ;; assoc-get call will always have returned a number
     (if (> output-count 0)
-       (set! result (format #f "~a-~a" result output-count)))
+        (set! result (format #f "~a-~a" result output-count)))
 
     (ly:parser-define!
-      parser 'counter-alist
-      (assoc-set! counter-alist output-suffix (1+ output-count)))
+     parser 'counter-alist
+     (assoc-set! counter-alist alist-key (1+ output-count)))
+    (set! current-outfile-name result)
     result))
 
 (define (print-book-with parser book process-procedure)
   (let* ((paper (ly:parser-lookup parser '$defaultpaper))
         (layout (ly:parser-lookup parser '$defaultlayout))
-        (count (ly:parser-lookup parser 'output-count))
-        (base (ly:parser-output-name parser))
-        (outfile-name (get-outfile-name parser base)))
-
+        (outfile-name (get-outfile-name parser)))
     (process-procedure book paper layout outfile-name)))
 
 (define-public (print-book-with-defaults parser book)
 (define (functional-or . rest)
   (if (pair? rest)
       (or (car rest)
-          (apply functional-and (cdr rest)))
+          (apply functional-or (cdr rest)))
       #f))
 
 (define (functional-and . rest)
@@ -672,8 +708,8 @@ applied to function @var{getter}.")
                                (string-length font)))
       (let* ((font-name (ly:font-name font))
             (full-name (if font-name font-name (ly:font-file-name font))))
-       (if (string-prefix? "Aybabtu" full-name)
-           "aybabtu"
+       (if (string-prefix? "Emmentaler-Brace" full-name)
+           "emmentaler-brace"
            (string-downcase full-name)))))
 
 (define-public (modified-font-metric-font-scaling font)