Update of /project/lisppaste/cvsroot/lisppaste2 In directory common-lisp.net:/tmp/cvs-serv3389
Modified Files: encode-for-pre.lisp lisppaste.asd package.lisp persistent-pastes.lisp web-server.lisp Added Files: irc-log-link.lisp Log Message: IRC log links from the pastebot to the context at meme.b9.com
Date: Tue Feb 3 21:41:12 2004 Author: bmastenbrook
Index: lisppaste2/encode-for-pre.lisp diff -u lisppaste2/encode-for-pre.lisp:1.7 lisppaste2/encode-for-pre.lisp:1.8 --- lisppaste2/encode-for-pre.lisp:1.7 Sat Jan 17 12:54:13 2004 +++ lisppaste2/encode-for-pre.lisp Tue Feb 3 21:41:12 2004 @@ -1,4 +1,4 @@ -;;;; $Id: encode-for-pre.lisp,v 1.7 2004/01/17 17:54:13 bmastenbrook Exp $ +;;;; $Id: encode-for-pre.lisp,v 1.8 2004/02/04 02:41:12 bmastenbrook Exp $ ;;;; $Source: /project/lisppaste/cvsroot/lisppaste2/encode-for-pre.lisp,v $
;;;; See the LICENSE file for licensing information. @@ -41,4 +41,4 @@ (replace-in-string str '(#& #< #>) '("&" "<" ">")))
(defun encode-for-tt (str) - (replace-in-string-1 (replace-in-string str '(#& #< #> #\newline #\return #\linefeed #\tab) '("&" "<" ">" "" "<br>" "" " ")) #\space " " 1)) \ No newline at end of file + (replace-in-string (replace-in-string-1 str #\space " " t) '(#& #< #> #\newline #\return #\linefeed #\tab) '("&" "<" ">" "" "<br>" "" " ")))
Index: lisppaste2/lisppaste.asd diff -u lisppaste2/lisppaste.asd:1.3 lisppaste2/lisppaste.asd:1.4 --- lisppaste2/lisppaste.asd:1.3 Sat Jan 17 13:02:14 2004 +++ lisppaste2/lisppaste.asd Tue Feb 3 21:41:12 2004 @@ -1,4 +1,5 @@ -;;;; $Id: lisppaste.asd,v 1.3 2004/01/17 18:02:14 bmastenbrook Exp $ +;;;; Silly emacs, this is -*- Lisp -*- +;;;; $Id: lisppaste.asd,v 1.4 2004/02/04 02:41:12 bmastenbrook Exp $ ;;;; $Source: /project/lisppaste/cvsroot/lisppaste2/lisppaste.asd,v $
;;;; See the LICENSE file for licensing information. @@ -26,11 +27,10 @@ :depends-on ("package")) (:file "encode-for-pre" :depends-on ("variable")) + (:file "irc-log-link") (:file "web-server" - :depends-on ("encode-for-pre")) + :depends-on ("encode-for-pre" "irc-log-link")) (:file "lisppaste" :depends-on ("web-server")) (:file "persistent-pastes" :depends-on ("web-server")))) - -
Index: lisppaste2/package.lisp diff -u lisppaste2/package.lisp:1.1.1.1 lisppaste2/package.lisp:1.2 --- lisppaste2/package.lisp:1.1.1.1 Mon Nov 3 12:17:53 2003 +++ lisppaste2/package.lisp Tue Feb 3 21:41:12 2004 @@ -1,4 +1,4 @@ -;;;; $Id: package.lisp,v 1.1.1.1 2003/11/03 17:17:53 eenge Exp $ +;;;; $Id: package.lisp,v 1.2 2004/02/04 02:41:12 bmastenbrook Exp $ ;;;; $Source: /project/lisppaste/cvsroot/lisppaste2/package.lisp,v $
;;;; See the LICENSE file for licensing information. @@ -7,7 +7,7 @@
(eval-when (:execute :load-toplevel :compile-toplevel) (defpackage :lisppaste - (:use :cl) + (:use :cl :sb-bsd-sockets) (:export :start-lisppaste)))
Index: lisppaste2/persistent-pastes.lisp diff -u lisppaste2/persistent-pastes.lisp:1.5 lisppaste2/persistent-pastes.lisp:1.6 --- lisppaste2/persistent-pastes.lisp:1.5 Sat Jan 17 13:34:37 2004 +++ lisppaste2/persistent-pastes.lisp Tue Feb 3 21:41:12 2004 @@ -8,7 +8,8 @@ (cons 'contents (paste-contents paste)) (cons 'universal-time (paste-universal-time paste)) (cons 'channel (paste-channel paste)) - (cons 'annotations (mapcar #'paste-alist (paste-annotations paste))))) + (cons 'annotations (mapcar #'paste-alist (paste-annotations paste))) + (cons 'log-link (paste-log-link paste))))
(defun save-pastes-to-file (file-name) (let ((*package* (find-package :lisppaste))) @@ -22,7 +23,7 @@ ,@body))
(defun make-paste-from-alist (e &optional annotation) - (with-assoc-vals (number user title contents universal-time annotations channel) e + (with-assoc-vals (number user title contents universal-time annotations channel log-link) e (unless annotation (setf *paste-counter* (max *paste-counter* number))) (make-paste :number number :user user @@ -30,11 +31,13 @@ :contents contents :universal-time universal-time :channel (if (not channel) (car *channels*) channel) - :annotations (mapcar #'(lambda (e) (make-paste-from-alist e)) annotations)))) + :annotations (mapcar #'(lambda (e) (make-paste-from-alist e)) annotations) + :log-link (if (not log-link) "" log-link))))
(defun read-pastes-from-file (file-name) (setf *pastes* nil) (let ((*package* (find-package :lisppaste))) (with-open-file (file file-name :direction :input :if-does-not-exist nil) - (let ((paste-alist (read file nil))) - (setf *pastes* (mapcar #'make-paste-from-alist paste-alist)))))) \ No newline at end of file + (if file + (let ((paste-alist (read file nil))) + (setf *pastes* (mapcar #'make-paste-from-alist paste-alist)))))))
Index: lisppaste2/web-server.lisp diff -u lisppaste2/web-server.lisp:1.22 lisppaste2/web-server.lisp:1.23 --- lisppaste2/web-server.lisp:1.22 Tue Feb 3 20:18:38 2004 +++ lisppaste2/web-server.lisp Tue Feb 3 21:41:12 2004 @@ -1,4 +1,4 @@ -;;;; $Id: web-server.lisp,v 1.22 2004/02/04 01:18:38 bmastenbrook Exp $ +;;;; $Id: web-server.lisp,v 1.23 2004/02/04 02:41:12 bmastenbrook Exp $ ;;;; $Source: /project/lisppaste/cvsroot/lisppaste2/web-server.lisp,v $
;;;; See the LICENSE file for licensing information. @@ -14,7 +14,8 @@ (is-annotation nil :type boolean) (annotations nil :type list) (annotation-counter 0 :type integer) - (channel "" :type string)) + (channel "" :type string) + (log-link "" :type string))
(defclass new-paste-handler (araneida:handler) ())
@@ -180,7 +181,8 @@ (t (let* ((paste-number (if annotate (parse-integer annotate :junk-allowed t) (incf *paste-counter*))) (paste-to-annotate (if annotate (find paste-number *pastes* :key #'paste-number))) - (annotation-number (if annotate (incf (paste-annotation-counter paste-to-annotate))))) + (annotation-number (if annotate (incf (paste-annotation-counter paste-to-annotate)))) + (log-link (araneida:urlstring (irc-log-link channel)))) (let ((url (araneida:urlstring (araneida:merge-url *display-paste-url* (if annotate @@ -193,7 +195,8 @@ :title title :contents text :universal-time (get-universal-time) - :channel channel))) + :channel channel + :log-link log-link))) (irc:privmsg *connection* channel (if annotate (format nil "~A annotated #~A with "~A" at ~A" username paste-number title url) @@ -238,7 +241,10 @@ (tr (td) ((td :align "left" :width "100%") ,(time-delta (paste-universal-time paste)))) (tr (td) - ((td :align "left" :width "100%") ,(encode-for-pre (paste-channel paste)))) + ((td :align "left" :width "100%") ,(encode-for-pre (paste-channel paste)) + ,@(if (not (string= (paste-log-link paste) "")) + `(" | " + ((a :href ,(paste-log-link paste)) "Context in IRC logs"))))) (tr ((td :align "left" :valign "top" :nowrap) "Paste contents:") ((td :width "100%"))) (tr (td (p)))