X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;ds=sidebyside;f=pubmed.lisp;h=eb3c9303207b3335bb4d2545c731a43d16ad709d;hb=34a203a1ef7082c9e90a052e2c552fb8fc3d0a6e;hp=c20d11138bfb04c8299a8fae9b3bc5992ae52e12;hpb=dc450ece8ff68c4a459fd47654c11ab28ddc0cc5;p=pubmed.git diff --git a/pubmed.lisp b/pubmed.lisp index c20d111..eb3c930 100644 --- a/pubmed.lisp +++ b/pubmed.lisp @@ -7,7 +7,7 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Jun 2001 ;;;; -;;;; $Id: pubmed.lisp,v 1.3 2002/10/31 19:42:26 kevin Exp $ +;;;; $Id: pubmed.lisp,v 1.5 2002/10/31 21:07:04 kevin Exp $ ;;;; ;;;; This file, part of cl-pubmed, is Copyright (c) 2002 by Kevin M. Rosenberg ;;;; @@ -119,7 +119,8 @@ (defmethod print-object ((obj pm-article) (s stream)) (print-unreadable-object (obj s :type t :identity t) - (format s "pmid: ~d" (article-pmid obj)))) + (format s "pmid:~d, title:~S" (article-pmid obj) + (article-title obj)))) (defun article-equal-p (a b) (check-type a pm-article) @@ -144,44 +145,47 @@ "Display an article set to specified stream in specified format" (dotimes (i (articles-count artset)) (print-article (nth i (articles artset)) :os os :format format - :complete complete :print-link print-link))) + :complete complete :print-link print-link)) + artset) (defmethod print-article ((art pm-article) &key (os *standard-output*) (format :text) (complete nil) (print-link t)) "Display an article" - (if (eql format :text) - (format os "~a~%~a~%~a~a ~a~%~a~%" - (article-title art) - (list-to-delimited-string (article-authors art) ", ") - (aif (article-affiliation art) - (format nil "~a~%" it) "") - (article-journal art) (article-ref art) - (aif (article-abstract art) + (ecase format + (:text + (format os "~a~%~a~%~a~a ~a~%~a~%" + (article-title art) + (list-to-delimited-string (article-authors art) ", ") + (aif (article-affiliation art) + (format nil "~a~%" it) "") + (article-journal art) (article-ref art) + (aif (article-abstract art) (if complete it "Abstract available") - "No abstract available") - (when complete - (format os "~a~%" (article-mesh-headings art)))) - - (let ((has-link (or (article-abstract art) (article-mesh-headings art)))) - (when (and print-link has-link) - (format os "" (make-url "print-article") (article-pmid art))) - (format os "
~a
~%" (article-title art)) - (when (and print-link has-link) - (format os "
")) - (format os "
~a
~%" - (list-to-delimited-string (article-authors art) ", ")) - (format os "
~a ~a
~%" - (article-journal art) (article-ref art)) - (when (and complete (article-abstract art)) - (format os "
~a
~%" - (article-abstract art))) - (when (and complete (article-mesh-headings art)) - (format os "
Mesh Headings:
") - (dolist (mh (article-mesh-headings art)) - (format os "
~a
~%" mh))) - (format os "

~%")))) + "No abstract available") + (when complete + (format os "~a~%" (article-mesh-headings art))))) + (:html + (let ((has-link (or (article-abstract art) (article-mesh-headings art)))) + (when (and print-link has-link) + (format os "" (make-url "print-article") (article-pmid art))) + (format os "

~a
~%" (article-title art)) + (when (and print-link has-link) + (format os "")) + (format os "
~a
~%" + (list-to-delimited-string (article-authors art) ", ")) + (format os "
~a ~a
~%" + (article-journal art) (article-ref art)) + (when (and complete (article-abstract art)) + (format os "
~a
~%" + (article-abstract art))) + (when (and complete (article-mesh-headings art)) + (format os "
Mesh Headings:
") + (dolist (mh (article-mesh-headings art)) + (format os "
~a
~%" mh))) + (format os "

~%")))) + art) ;;; PubMed Query Functions @@ -290,12 +294,12 @@ XML string of PubMed search results and XML search status" "Extract article contents from PubMed XML string and return results in pm-article class" (let ((article (make-instance 'pm-article))) (setf - (article-pmid article) (parse-integer (xml-tag-contents "PMID" xmlstr a-start)) - (article-title article) (xml-tag-contents "ArticleTitle" xmlstr a-start) - (article-journal article) (xml-tag-contents "MedlineTA" xmlstr a-start) - (article-pages article) (xml-tag-contents "MedlinePgn" xmlstr a-start) - (article-affiliation article) (xml-tag-contents "Affiliation" xmlstr a-start) - (article-abstract article) (xml-tag-contents "AbstractText" xmlstr a-start)) + (article-pmid article) (parse-integer (xml-tag-contents "PMID" xmlstr a-start a-end)) + (article-title article) (xml-tag-contents "ArticleTitle" xmlstr a-start a-end) + (article-journal article) (xml-tag-contents "MedlineTA" xmlstr a-start a-end) + (article-pages article) (xml-tag-contents "MedlinePgn" xmlstr a-start a-end) + (article-affiliation article) (xml-tag-contents "Affiliation" xmlstr a-start a-end) + (article-abstract article) (xml-tag-contents "AbstractText" xmlstr a-start a-end)) (multiple-value-bind (ji-start ji-end ji-next) (positions-xml-tag-contents "JournalIssue" xmlstr a-start a-end) (declare (ignore ji-next))