+;;;; 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)
(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)