From ec2f480b25b6fe12804ed0e089ae1beeb1131662 Mon Sep 17 00:00:00 2001 From: cage Date: Sun, 22 Sep 2024 14:47:32 +0200 Subject: [PATCH] - fixed parsing of gempub metadata. --- src/gempub.lisp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/gempub.lisp b/src/gempub.lisp index be1cf27..60e97bc 100644 --- a/src/gempub.lisp +++ b/src/gempub.lisp @@ -57,8 +57,12 @@ gempub-version gempub-cover)) -(defrule gempub-entry (and gempub-key (? gempub-blanks) gempub-key-value-separator - (? gempub-blanks) gempub-value #\NewLine) +(defrule linebreak (or #\NewLine #\Return)) + +(defrule gempub-entry (or (and gempub-key (? gempub-blanks) gempub-key-value-separator + (? gempub-blanks) gempub-value (+ linebreak)) + (and gempub-key (? gempub-blanks) gempub-key-value-separator + (? gempub-blanks) gempub-value)) (:function (lambda (a) (list (first a) (fifth a))))) (defrule gempub-metadata (* gempub-entry) @@ -79,7 +83,10 @@ (when (find +metadata-entry-name+ entries :test #'String=) (when-let ((metadata-raw (os-utils:unzip-single-file zip-file +metadata-entry-name+))) - (parse 'gempub-metadata metadata-raw)))))) + (handler-case + (parse 'gempub-metadata metadata-raw) + (error (e) + (error "Error parsing metadata from file ~s: ~a" zip-file e)))))))) (defun save-metadata (zip-file) (when-let ((metadata (extract-metadata zip-file)))