diff options
author | Ludovic Court`es | 2007-08-29 13:21:09 +0000 |
---|---|---|
committer | Ludovic Court`es | 2007-08-29 13:21:09 +0000 |
commit | 3b765c35b128e495991e654c400057112e4b7722 (patch) | |
tree | 0f3d3c89122ff4ba04fa68efb8cb9248dd6b979f /src | |
parent | 2da2bb053a1cc252c71966135e7a9b675649ff1d (diff) | |
parent | 1cf52b9cef7629a95dc7c3ddf82ea907967d9ca4 (diff) | |
download | skribilo-3b765c35b128e495991e654c400057112e4b7722.tar.gz skribilo-3b765c35b128e495991e654c400057112e4b7722.tar.lz skribilo-3b765c35b128e495991e654c400057112e4b7722.zip |
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: skribilo@sv.gnu.org--2006/skribilo--devo--1.2--patch-155
Diffstat (limited to 'src')
-rw-r--r-- | src/guile/skribilo/biblio/author.scm | 16 |
1 files 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 () |