Mehrere Lieder auf eine Seite
This commit is contained in:
1 parent
809100b2f3
commit
2359a7c5ae
7 files changed
+243
-43
No files matched your search
@@ -304,16 +304,9 @@ indexSection =
|
||||
(add-index-item! 'indexSectionMarkup (prepend-alist-chain 'combine-with-next #t (prepend-alist-chain 'rawtext text '())) sorttext))
|
||||
|
||||
#(define (extract-and-check-vars-from-header bookheader varlist)
|
||||
(let* ((headervars (hash-map->list cons (struct-ref (ly:book-header bookheader) 0)))
|
||||
(extract-var-and-check (lambda (headervar)
|
||||
(let* ((variableref (assoc-ref headervars headervar))
|
||||
(extracted (if variableref (variable-ref variableref) #f)))
|
||||
(if (and extracted (not (and (string? extracted) (string-null? extracted)))) extracted #f)))))
|
||||
(map (lambda (varsymbol)
|
||||
(cons varsymbol (extract-var-and-check varsymbol))
|
||||
) varlist)))
|
||||
(extract-and-check-vars-from-module (ly:book-header bookheader) varlist))
|
||||
|
||||
headerToTOC = #(define-music-function (parser location header label) (ly:book? symbol?)
|
||||
#(define (header-module-to-toc! headermodule label)
|
||||
(define (all-author-ids authors)
|
||||
(let ((poetIds (find-author-ids-by 'text authors))
|
||||
(translatorIds (find-author-ids-by 'translation authors))
|
||||
@@ -331,7 +324,7 @@ headerToTOC = #(define-music-function (parser location header label) (ly:book? s
|
||||
))
|
||||
(let*
|
||||
(
|
||||
(extractedheadervars (extract-and-check-vars-from-header header '(title starttext alttitle categorytitle categories authors songnumber chapterref)))
|
||||
(extractedheadervars (extract-and-check-vars-from-module headermodule '(title starttext alttitle categorytitle categories authors songnumber chapterref)))
|
||||
(title (assq-ref extractedheadervars 'title))
|
||||
(starttext (assq-ref extractedheadervars 'starttext))
|
||||
(alttitle (assq-ref extractedheadervars 'alttitle))
|
||||
@@ -357,6 +350,9 @@ headerToTOC = #(define-music-function (parser location header label) (ly:book? s
|
||||
(if title (add-to-toc! title #f) #{ #})
|
||||
))
|
||||
|
||||
headerToTOC = #(define-music-function (parser location header label) (ly:book? symbol?)
|
||||
(header-module-to-toc! (ly:book-header header) label))
|
||||
|
||||
|
||||
%% https://github.com/NalaGinrut/guile-csv/blob/master/csv/csv.scm
|
||||
|
||||
@@ -402,11 +398,8 @@ headerToTOC = #(define-music-function (parser location header label) (ly:book? s
|
||||
(para-lines (map cleanup-whitespaces para-strings)))
|
||||
(string-join para-lines "\n")))
|
||||
(define (generate-toc-csv labelPageTable)
|
||||
(let ((song-lines (map (lambda (song)
|
||||
(let* ((filename (symbol->string (car song)))
|
||||
(songvars (cdr song))
|
||||
(page-number (assoc-get (assq-ref songvars 'label) labelPageTable))
|
||||
(extractedheadervars (extract-and-check-vars-from-header (assq-ref songvars 'header)
|
||||
(define (song-line filename page-number headermodule)
|
||||
(let* ((extractedheadervars (extract-and-check-vars-from-module headermodule
|
||||
'(title starttext alttitle categorytitle categories authors year_text year_melody year_translation year_composition year_adaption infotext translation pronunciation copyright source)))
|
||||
(headervar-or-empty (lambda (varsym)
|
||||
(let ((extracted (assq-ref extractedheadervars varsym)))
|
||||
@@ -452,6 +445,15 @@ headerToTOC = #(define-music-function (parser location header label) (ly:book? s
|
||||
(format-info-paragraphs (headervar-or-empty 'translation))
|
||||
(format-info-paragraphs (headervar-or-empty 'pronunciation))
|
||||
))))
|
||||
;; Eingebettete Lieder (embedded_songs.ily) bekommen eigene Zeilen mit
|
||||
;; Dateiname und Seite des Hauptlieds.
|
||||
(let ((song-lines (append-map (lambda (song)
|
||||
(let* ((filename (symbol->string (car song)))
|
||||
(songvars (cdr song))
|
||||
(page-number (assoc-get (assq-ref songvars 'label) labelPageTable))
|
||||
(headermodule (ly:book-header (assq-ref songvars 'header))))
|
||||
(map (lambda (module) (song-line filename page-number module))
|
||||
(cons headermodule (embedded-songs-of-header headermodule)))))
|
||||
(alist-delete 'markupPage (alist-delete 'imagePage (alist-delete 'emptyPage song-list))))))
|
||||
(call-with-output-file "toc.csv"
|
||||
(lambda (port)
|
||||
|
||||
Reference in new issue
Block a user