From 1cf52b9cef7629a95dc7c3ddf82ea907967d9ca4 Mon Sep 17 00:00:00 2001 From: Ludovic Court`es Date: Wed, 29 Aug 2007 12:00:15 +0000 Subject: biblio: Properly handle non-string authors. * src/guile/skribilo/biblio/author.scm (bib-sort/first-author-last-name)[maybe-first-author-last-name]: New. Use it. git-archimport-id: lcourtes@laas.fr--2006-libre/skribilo--devo--1.2--patch-97 --- src/guile/skribilo/biblio/author.scm | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/guile/skribilo/biblio/author.scm b/src/guile/skribilo/biblio/author.scm index fe4e0e6..785f948 100644 --- a/src/guile/skribilo/biblio/author.scm +++ b/src/guile/skribilo/biblio/author.scm @@ -131,6 +131,14 @@ (define (bib-sort/first-author-last-name entries) ;; May be passed as the `:sort' argument of `the-bibliography'. + (define (maybe-first-author-last-name author) + (cond ((string? author) + (first-author-last-name author)) + (else + ;; AUTHOR cannot be abbreviated, maybe because it is enclosed in a + ;; `noabbrev' markup (e.g., because it's not a person name). + (string-trim (ast->string author))))) + (define (entry-field entry name) (let ((o (markup-option entry name))) (and o (markup-body o)))) @@ -159,10 +167,10 @@ (lambda (e1 e2) (and (check-author e1) (check-author e2) - (let* ((a1 (first-author-last-name - (markup-body (markup-option e1 'author)))) - (a2 (first-author-last-name - (markup-body (markup-option e2 'author))))) + (let ((a1 (maybe-first-author-last-name + (markup-body (markup-option e1 'author)))) + (a2 (maybe-first-author-last-name + (markup-body (markup-option e2 'author))))) (if (string-ci=? a1 a2) (<=? e1 e2 'year (lambda () -- cgit v1.2.3